Oracle触发器已编译,但插入时失败

Oracle触发器已编译,但插入时失败,oracle,triggers,Oracle,Triggers,我有下面的触发器 CREATE OR REPLACE TRIGGER TRG_RESUME_AFTER_UPDATE BEFORE INSERT OR UPDATE ON RESUME FOR EACH ROW BEGIN :new.modified_date := SYSTIMESTAMP; END; 由谁来编译 TRIGGER TRG_RESUME_AFTER_UPDATE compiled 但是,当我尝试插入时,会出现以下错误: Error at Command Line :

我有下面的触发器

CREATE OR REPLACE TRIGGER TRG_RESUME_AFTER_UPDATE
BEFORE INSERT OR UPDATE ON RESUME
FOR EACH ROW
BEGIN
    :new.modified_date := SYSTIMESTAMP;
END;
由谁来编译

TRIGGER TRG_RESUME_AFTER_UPDATE compiled
但是,当我尝试插入时,会出现以下错误:

Error at Command Line : 11 Column : 8
Error report -
SQL Error: ORA-04098: trigger 'D.TRG_RESUME_AFTER_UPDATE' is invalid and failed re-validation
04098. 00000 -  "trigger '%s.%s' is invalid and failed re-validation"
*Cause:    A trigger was attempted to be retrieved for execution and was
           found to be invalid.  This also means that compilation/authorization
           failed for the trigger.
*Action:   Options are to resolve the compilation/authorization errors,
           disable the trigger, or drop the trigger.
PL/SQL对象可以“编译”,但仍有错误。听起来,无论你使用什么样的客户端程序,都可能没有给你适当的反馈。(在SQLPlus中,应该是“使用编译错误创建触发器”。)

在任何情况下,要做的事情是查询用户的错误,以找出错误是什么。由于触发器非常简单,我猜表中不存在
modified_date
,或者它是一种时间戳无法隐式转换的数据类型。如果是
DATE
,则使用
SYSDATE
比使用
SYSTIMESTAMP

PL/SQL对象可以“编译”,但仍然有错误更合适。听起来,无论你使用什么样的客户端程序,都可能没有给你适当的反馈。(在SQLPlus中,应该是“使用编译错误创建触发器”。)

在任何情况下,要做的事情是查询用户的错误,以找出错误是什么。由于触发器非常简单,我猜表中不存在
modified_date
,或者它是一种时间戳无法隐式转换的数据类型。如果是
DATE
,则使用
SYSDATE
比使用
SYSTIMESTAMP

PL/SQL对象可以“编译”,但仍然有错误更合适。听起来,无论你使用什么样的客户端程序,都可能没有给你适当的反馈。(在SQLPlus中,应该是“使用编译错误创建触发器”。)

在任何情况下,要做的事情是查询用户的错误,以找出错误是什么。由于触发器非常简单,我猜表中不存在
modified_date
,或者它是一种时间戳无法隐式转换的数据类型。如果是
DATE
,则使用
SYSDATE
比使用
SYSTIMESTAMP

PL/SQL对象可以“编译”,但仍然有错误更合适。听起来,无论你使用什么样的客户端程序,都可能没有给你适当的反馈。(在SQLPlus中,应该是“使用编译错误创建触发器”。)


在任何情况下,要做的事情是查询用户的错误,以找出错误是什么。由于触发器非常简单,我猜表中不存在
modified_date
,或者它是一种时间戳无法隐式转换的数据类型。如果是
日期
,则使用
SYSDATE
SYSTIMESTAMP
更合适。好的调用Dave是SYSDATE而不是timeStamp好的调用Dave是SYSDATE而不是timeStamp好的调用Dave是SYSDATE而不是timeStamp好的调用Dave是SYSDATE而不是timeStamp