当我编写此触发器时,当我尝试使用SYS
或SYSTEM
以外的用户登录时会显示错误消息:
CREATE OR REPLACE TRIGGER logon_trigger
AFTER LOGON
ON DATABASE
BEGIN
if user not in ('sys' , 'system') then
INSERT INTO HOMEWORKU.LOGON_LOGOFF_TABLE (who, when_login,when_logoff) VALUES (user, sysdate,'null');
end if;
END;
答案 0 :(得分:2)
如果when_logon
和when_logoff
都是数据类型为DATE
的列,那么您尝试在其中插入字符串时会出错:除非它恰好代表了根据您当前的NLS设置确定日期,您不应该依赖它。因此,将'null'
更改为不带引号的null
。
您还需要将用户比较为大写值,因此将'sys'
更改为'SYS
'等
if user not in ('SYS' , 'SYSTEM') then
INSERT INTO HOMEWORKU.LOGON_LOGOFF_TABLE (who, when_login, when_logoff)
VALUES (user, sysdate, null);
end if;