0

我正在尝试创建一个触发器,该触发器将更新表,以便在将某些内容插入表中时,给定的结束日期将更改为设置为新条目开始日期的前一天。我已经创建了这个符合条件的触发器,但是在检查时它不起作用。谁能看到它的问题?

CREATE TRIGGER
    updatetrigger12345
BEFORE INSERT ON
    shares_amount
FOR EACH ROW
  BEGIN
        UPDATE OF
          shares_amount
        SET
          date_end = :NEW.date_start-1
        WHERE
          share_issue_id = :NEW.share_issue_id
          AND
          share_id= :NEW.share_id
          ;
END
;
/
4

1 回答 1

0

糟糕,糟糕,糟糕。您不想尝试更新正在执行触发器的表。您只需要更新感兴趣的 ":new" 字段。也许是这样的:

CREATE TRIGGER
    updatetrigger12345
BEFORE INSERT ON
    shares_amount
FOR EACH ROW
  BEGIN

  :NEW.date_end := :NEW.date_start-1;
END
;
/

这是一个教程。此外,如果不需要,我会尽量远离使用触发器。当然有些情况是有意义的。但是,它们可能会被滥用,并在以后造成很多混乱和问题。请阅读这篇经典的 AskTom 文章触发器的问题。

于 2013-10-15T18:58:59.973 回答