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

Livis的开发之路 2010-03-16 11:00:00
先建立一个记录对表操作的记录表

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


有哪位大虾能帮我解决下,谢谢。
...全文
1796 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2010-03-17
  • 打赏
  • 举报
回复
1、create table中不应该有VALUES关键字,VALUES应该用在insert语句中。
2、最后一个END IF后少了“;”号。
3、如果触发器每一行都要触发的话,需要加上FOR EACH ROW(不加不会影响编译的正确性)。
  • 打赏
  • 举报
回复
谢谢大家了,原来真的是少了个分号的问题啊。。
huangyunzeng2008 2010-03-17
  • 打赏
  • 举报
回复
INSERT INTO mylog VALUES(user,sysdate,'U');
END IF
END;
红色部分缺分号。
zj654334362 2010-03-16
  • 打赏
  • 举报
回复
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

17,136

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧