我有这四个表:
Suppliers( id_sup, name, city)
Products (id_prod, name, city)
Companies (id_co, name, city)
Deliveries (id_sup, id_prod, id_co)
我为交货创建了一个名为“ v_deliveries”的视图,我想创建一个触发器而不是触发器,这样,如果有人尝试在该视图中插入数据,它将实际上将其添加到交货表中。这是我尝试过的:
CREATE OR REPLACE TRIGGER new_deliv_trigg
INSTEAD OF INSERT ON v_deliveries FOR EACH ROW
BEGIN
INSERT INTO Deliveries (id_sup, id_prod, id_co)
VALUES (:NEW.id_sup, :NEW.id_prod, :NEW.id_co);
End;
您真正使用哪个数据库?因为,对于Oracle来说,它可以正常运行:
SQL> create table deliveries (id_sup number, id_prod number, id_co number);
Table created.
SQL> create or replace view v_deliveries as select * From deliveries;
View created.
SQL>
SQL> CREATE OR REPLACE TRIGGER new_deliv_trigg
2 INSTEAD OF INSERT ON v_deliveries FOR EACH ROW
3 BEGIN
4 INSERT INTO Deliveries (id_sup, id_prod, id_co)
5 VALUES (:NEW.id_sup, :NEW.id_prod, :NEW.id_co);
6 End;
7 /
Trigger created.
SQL>