ORACLE建立触发器时出现WARNING:TRIGGER CREATED WITH COMPILATION ERRORS

时间:2021-11-03 05:02:32
先建立一个记录对表操作的记录表

CREATE TABLE mylog VALUES(CURR_USER VARCHAR2(100),CURR_DATE DATE,ACTION CHAR(1));


创建触发器

CREATE OR REPLACE TRIGGER sinfo
AFTER UPDATE OR INSERT OR DELETE ON DEPT
BEGIN
IF INSERTING THEN
INSERT INTO mylog VALUES(user,sysdate,'I');
ELSIF DELETING THEN
INSERT INTO mylog VALUES(user,sysdate,'D');
ELSE
INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
/


运行时出现
WARNING:TRIGGER CREATED WITH COMPILATION ERRORS


有哪位大虾能帮我解决下,谢谢。

5 个解决方案

#1


CREATE TABLE mylog  VALUES(CURR_USER VARCHAR2(100),CURR_DATE DATE,ACTION CHAR(1));
是你创表的句子错了,多了 VALUES
下面的触发器是我运行了,是没错的,如果真的是创建触发器的错,你就在后面加个 

AFTER UPDATE OR INSERT OR DELETE ON DEPT
for each row 
BEGIN

#2


1、create table中不应该有VALUES关键字,VALUES应该用在insert语句中。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。

#3


该回复于2010-03-17 09:00:08被版主删除

#4


INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
红色部分缺分号。

#5


谢谢大家了,原来真的是少了个分号的问题啊。。

#1


CREATE TABLE mylog  VALUES(CURR_USER VARCHAR2(100),CURR_DATE DATE,ACTION CHAR(1));
是你创表的句子错了,多了 VALUES
下面的触发器是我运行了,是没错的,如果真的是创建触发器的错,你就在后面加个 

AFTER UPDATE OR INSERT OR DELETE ON DEPT
for each row 
BEGIN

#2


1、create table中不应该有VALUES关键字,VALUES应该用在insert语句中。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。

#3


该回复于2010-03-17 09:00:08被版主删除

#4


INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
红色部分缺分号。

#5


谢谢大家了,原来真的是少了个分号的问题啊。。