无效的触发器异常

沙米姆艾哈迈德 |

我是 ORACLE SQL 的新手,我正在尝试创建一个触发器来生成 auto_incement 序列号作为我表中的主键,但不知道我犯了什么错误,因此我得到了:

执行部分保存事件时出错:错误代码=4098 ST= java.sql.BatchUpdateException: ORA-04098: trigger '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;
a_horse_with_no_name

你有两个错误:

  1. IF没有END IF
  2. SELECT INTO没有FROM

但是选择不是必需的,您可以简单地分配序列值:

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   
      :NEW.STAGING_REASON_ID := STAGING_SEQ_ERROR_REASON.NEXTVAL;
   END IF; --<< missing
END;
/

不知道您在哪里如何运行你的PL / SQL,但你通常还需要一个/在PL / SQL块的结束。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WPF样式触发器动作异常

来自分类Dev

Oracle触发器ORA-04098:触发器无效且重新验证失败

来自分类Dev

SQL触发器“列列表对此触发器类型无效”

来自分类Dev

创建基于时间的触发器时,“异常:此脚本触发器太多”

来自分类Dev

触发器中的无效标识符

来自分类Dev

Oracle-在触发器中获取突变表异常?

来自分类Dev

Verilog始终阻止触发器行为异常

来自分类Dev

Postgres触发器中的远程异常处理?

来自分类Dev

如何从Mysql触发器中引发异常?

来自分类Dev

为什么变量触发器引发异常?

来自分类Dev

如何从Mysql触发器中引发异常?

来自分类Dev

在 firebase 云函数触发器上添加异常

来自分类Dev

每次身份验证异常不是触发器

来自分类Dev

Phpmyadmin触发器

来自分类Dev

定位触发器

来自分类Dev

Cognito 用户迁移触发器 - 用户迁移期间的异常 - 异常位置

来自分类Dev

我的触发器ORA-00904:“ ID_PENDAFTAR”:无效的标识符

来自分类Dev

创建触发器错误错误:ORA-04076:无效的新或旧规范

来自分类Dev

将触发器变成复合触发器?

来自分类Dev

在触发器中执行的方法中发生异常时,日志不持久

来自分类Dev

如何将MySQL触发器异常/失败信息存储到表或变量中

来自分类Dev

异常事务在触发器中结束。该批次已中止

来自分类Dev

在触发器内引发时Supress / filter异常上下文

来自分类Dev

在WPF中,在MenuItem的模板中,如果在IsHighlighted触发器中设置Background,则Background IsPressed触发器无效

来自分类Dev

在列上写入触发器

来自分类Dev

更新视图与触发器

来自分类Dev

调试DocumentDB触发器

来自分类Dev

PostgreSQL更新触发器

来自分类Dev

SQL Server触发器

Related 相关文章

热门标签

归档