试图使用触发器

问题描述 投票:0回答:1

我正在尝试添加新员工时激活触发器。触发器应存储执行插入操作的人员的用户名及其发生的时间。使用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;
/

触发器有效,但是在我尝试插入新记录后,它不起作用,并告诉我触发器中的错误。

enter image description here

sql oracle database-trigger
1个回答
0
投票

错误消息告诉您触发器是无效的,即它包含语法错误并且无法编译。因此,您需要修复编译错误。

有几种查找错误的方法。您可以运行查询:

select * from user_errors
where type = 'TRIGGER'
and name = 'INSERT_2'
/

您可以在CREATE TRIGGER语句之后使用SQL * Plus命令show errors。>

或者,好像您正在使用SQL Developer一样,您可以在对象导航器中打开触发器。您将看到该选项卡具有多个窗格,其中一个窗格标记为错误

。打开该窗格以查看出了什么问题。

这里是免费的:尽管sysdate从技术上讲是一种功能,但它是一种特殊的功能。它从不接受任何参数,并且用方括号调用是错误的。除去以下括号:sysdate()

© www.soinside.com 2019 - 2024. All rights reserved.