【发布时间】:2017-11-14 08:28:13
【问题描述】:
我是 ORACLE SQL 的新手,我正在尝试创建一个触发器来生成 auto_incement 序列号作为我表中的主键,但不知道我犯了什么错误,因此我得到了:
执行部分保存事件时出错:错误代码=4098 ST= java.sql.BatchUpdateException: ORA-04098: 触发器 'TNTCA.STAGING_TRIGGER_ERROR_REASON' 无效且失败 重新验证\n,由 : \"ORA-04098: trigger 'TNTCA.STAGING_TRIGGER_ERROR_REASON' 无效且失败 重新验证\n\"
我的 SQL 语句是:
create global temporary table STAGING_ERROR_REASON ( STAGING_REASON_ID number(4) constraint STAGING_REASON_ID not null ,REASON nvarchar2(1024) not null ,constraint PK_STAGING_REASON_ID PRIMARY KEY(STAGING_REASON_ID) );
create sequence STAGING_SEQ_ERROR_REASON start with 1 increment by 1 minvalue 1 maxvalue 10000;
CREATE OR REPLACE TRIGGER "STAGING_TRIGGER_ERROR_REASON"
BEFORE INSERT ON STAGING_ERROR_REASON
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
if(:NEW.STAGING_REASON_ID is null) then
SELECT STAGING_SEQ_ERROR_REASON.NEXTVAL
INTO :NEW.STAGING_REASON_ID
END;
ALTER TRIGGER "STAGING_TRIGGER_ERROR_REASON" ENABLE;
【问题讨论】: