Oracle将尝试重新编译被引用的无效对象.这里的触发器无效,每次尝试插入一行时,它将尝试重新编译触发器,并且失败,这将导致ORA-04098错误.
您可以从user_errors中选择*,其中type =’TRIGGER’和name =’NEWALERT’来查看触发器实际获取的错误以及为什么不能编译.在这种情况下,您似乎在插入行末尾缺少一个分号:
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger')
所以做:
CREATE OR REPLACE TRIGGER newAlert
AFTER INSERT OR UPDATE ON Alerts
BEGIN
INSERT INTO Users (userID, firstName, lastName, password)
VALUES ('how', 'im', 'testing', 'this trigger');
END;
/
如果您在执行此操作时收到编译警告,则可以在SQL * Plus或SQL Developer中显示错误,或再次查询user_errors.
当然,这假定你的用户表确实有这些列名称,而且都是varchar2 …但是可能你会真的做一些更有趣的触发器.