Oracle将尝试重新编译引用的无效对象。在这里,触发器是无效的,并且每次尝试插入一行时,它将尝试重新编译触发器,但失败,这将导致ORA-04098错误。
您可以
select * from user_errors where type = 'TRIGGER' and name ='NEWalert'查看触发器实际发生的错误以及为什么不进行编译。在这种情况下,您似乎在行尾缺少分号
insert:
INSERT INTO Users (userID, firstName, lastName, password)VALUES ('how', 'im', 'testing', 'this trigger')因此,使它:
CREATE OR REPLACE TRIGGER newalertAFTER INSERT OR UPDATE ON alerts BEGIN INSERT INTO Users (userID, firstName, lastName, password) VALUES ('how', 'im', 'testing', 'this trigger'); END;/如果在执行操作时收到编译警告,
show errors则可以使用SQL * Plus或SQL
Developer,也可以
user_errors再次查询。
当然,这假设您的
Users表确实具有这些列名,并且它们都是
varchar2…但是,大概您将对触发器做一些更有趣的事情。



