触发器中的PL / SQL块被设置为null

时间:2016-05-09 19:28:20

标签: oracle-sqldeveloper

我不确定我能提供多少信息,因为我仍然不确定它为什么会发生,但我在Oracle SQL开发人员的触发器中的PL / SQL块随机时间被设置为null。我发生这种情况时:删除行,启用触发器,编译触发器,插入行(通过ODAP.net)和更新行。

我尽力找到答案,但我找不到任何答案。任何想法都会非常受欢迎。

此外,不确定是否发布此处或serverfault。

触发器是对此的变体:

create or replace TRIGGER basic_ticket_trg

BEFORE INSERT ON basic_ticket

FOR EACH ROW

BEGIN

  <<COLUMN_SEQUENCES>>
  BEGIN
    IF INSERTING AND :NEW.ID IS NULL THEN
      SELECT basic_ticket_seq.NEXTVAL INTO :NEW.ID FROM SYS.DUAL;
    END IF;
  END COLUMN_SEQUENCES;

END;

if语句不断被设置为null,因此最终看起来像:

create or replace TRIGGER basic_ticket_trg

BEFORE INSERT ON basic_ticket

FOR EACH ROW

BEGIN

  <<COLUMN_SEQUENCES>>
  BEGIN
    null;
  END COLUMN_SEQUENCES;

END;

2 个答案:

答案 0 :(得分:1)

我仍然不完全100%确定它为什么会发生,但对于那些观看,它是由更新触发器将作用的表引起的。

答案 1 :(得分:0)

尝试摆脱标签:&#34; COLUMN_SEQUENCES&#34;,只需删除它,每件事情都会很完美,至少它对我有用,我认为这是一个将代码删除的错误必须删除列或更改其名称时为NULL。