Oracle SQL触发器错误(ORA-00942:表或视图不存在)
我创建此sql触发器:Oracle SQL触发器错误(ORA-00942:表或视图不存在),oracle,plsql,database-trigger,Oracle,Plsql,Database Trigger,我创建此sql触发器: CREATE OR REPLACE TRIGGER create_event_from_task BEFORE INSERT ON llx_projet_task BEGIN INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note) SELE
CREATE OR REPLACE TRIGGER create_event_from_task BEFORE INSERT ON llx_projet_task
BEGIN
INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note)
SELECT 0, 0, '', 'prova', id, 'project_task', fk_project, date_start, date_end, progress, description
FROM inserted;
END;
/
但当我执行时,会说以下错误:
Errors: TRIGGER CREATE_EVENT_FROM_TASK
Line/Col: 2/2 PL/SQL: SQL Statement ignored
Line/Col: 4/7 PL/SQL: ORA-00942: table or view does not exist
有人能帮我吗?
插入的
是SQL Server的一部分。我想你想要:
BEGIN
INSERT INTO llx_actioncomm (priority, fulldayevent, location, label, fk_element, elementtype, fk_project, datep, datef, percentage, note)
SELECT 0, 0, '', 'prova', :new.id, 'project_task',
:new.fk_project, :new.date_start, :new.date_end,
:new.progress, :new.description
FROM dual;
END;
我认为它之所以出现这个错误是因为触发器中的select查询。检查调用触发器的用户是否有权执行“插入”表中的select Ora-00942表示您正试图执行引用不存在的表或视图的SQL语句。“表或视图不存在”错误可能有以下几种原因:
1) Referencing a table or view that does not exist
2) Using an unauthorized synonym
3) Using an expression of view where a table is required
4) Attempting to use a table without proper permission or privilege
除非您有一个名为插入的
表,否则Oracle没有内置的表。错误消息似乎很清楚。您是否检查过名为“inserted”的表与触发器位于同一架构中?如果存在“inserted”表,您可能应该向其授予权限,以便触发器检测。假设您是SQL Server用户(如下所述),请小心使用触发器--Oracle和SQL Server对于触发器的行为有明显不同的机制。或者干脆插入(…)值(…,:new.fk_项目,:new.date_开始,…)