我正在尝试添加新员工时激活触发器。触发器应存储执行插入操作的人员的用户名及其发生的时间。使用Oracle数据库。
到目前为止,我的触发器代码是:
CREATE OR REPLACE TRIGGER insert_2
AFTER INSERT ON employees
for each row
DECLARE
vUser varchar(50);
begin
select user into vUser from dual;
insert into audit_cheker1 (date_create, inserted_by)
values (sysdate(), vUser);
END;
/
触发器有效,但是在我尝试插入新记录后,它不起作用,并告诉我触发器中的错误。
错误消息告诉您触发器是无效的,即它包含语法错误并且无法编译。因此,您需要修复编译错误。
有几种查找错误的方法。您可以运行查询:
select * from user_errors
where type = 'TRIGGER'
and name = 'INSERT_2'
/
您可以在CREATE TRIGGER语句之后使用SQL * Plus命令show errors
。>
或者,好像您正在使用SQL Developer一样,您可以在对象导航器中打开触发器。您将看到该选项卡具有多个窗格,其中一个窗格标记为错误
。打开该窗格以查看出了什么问题。这里是免费的:尽管sysdate
从技术上讲是一种功能,但它是一种特殊的功能。它从不接受任何参数,并且用方括号调用是错误的。除去以下括号:sysdate()
。