【发布时间】:2016-12-04 04:12:38
【问题描述】:
我有这个视图和通过视图插入的触发器
CREATE VIEW LivrareNoua AS
Select numef,numec,numep,cantitate
From Furnizori F, Componente C, Proiecte P, Livrari L
Where F.idf = L.idf AND C.idc = L.idc AND P.idp = L.idp;
不知道是什么问题
create or replace TRIGGER triggerinstead
INSTEAD OF INSERT ON LivrareNoua
FOR EACH ROW
BEGIN
INSERT INTO Furnizori(idf,numef) VALUES('&idf',:new.numef);
INSERT INTO Componete(idc,numec) VALUES('&idc',:new.numec);
INSERT INTO Proiecte(idp,numep) VALUES('&idp',:new.numep);
INSERT INTO Livrari(idf,idc,idp,cantitate) VALUES('&idf','&idc','&idp',:new.cantitate);
END;
错误:
3 13 PL/SQL: ORA-00942: 表或视图不存在
3 1 PL/SQL:忽略 SQL 语句
【问题讨论】:
-
首先你标记了
sql-server和oracle。我已经删除了sql-server,因为错误提示 Oracle。第二件事请发布desc Componente的结果。错误提示componente中没有列cantitate -
你是通过 sqlplus 运行的吗?确保“设置扫描关闭”
-
最后一个表是 Livrari,但仍然显示表或视图不存在。我在 oracle Apex 上运行它
-
首先,您的视图引用了一个表
Componente,但您的触发器引用了一个名称相似的Componete,没有n。我猜这是一个错字。一旦你解决了这个问题,你期望'&idf'是什么?您是否真的要将该文字字符串插入您的表中?那么每一行都会有相同的idf值吗?这似乎极不可能。如果您希望将其替换为SQL*Plus替换变量或 APEX 会话变量,那将不起作用。