【问题标题】:Adding through view trigger error通过视图添加触发错误
【发布时间】: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-serveroracle。我已经删除了sql-server,因为错误提示 Oracle。第二件事请发布desc Componente 的结果。错误提示componente中没有列cantitate
  • 你是通过 sqlplus 运行的吗?确保“设置扫描关闭”
  • 最后一个表是 Livrari,但仍然显示表或视图不存在。我在 oracle Apex 上运行它
  • 首先,您的视图引用了一个表Componente ,但您的触发器引用了一个名称相似的Componete,没有n。我猜这是一个错字。一旦你解决了这个问题,你期望'&idf' 是什么?您是否真的要将该文字字符串插入您的表中?那么每一行都会有相同的idf 值吗?这似乎极不可能。如果您希望将其替换为 SQL*Plus 替换变量或 APEX 会话变量,那将不起作用。

标签: oracle plsql


【解决方案1】:

确保开发架构与视图的架构相同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多