我尝试创建一个更新表的触发器,以便在将某些内容插入表时,给定的结束日期将更改为设置为新条目的开始日期之前的那一天。我创建了这个符合的触发器但是在检查它时不起作用。有谁能看到它的问题?
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
;
/
答案 0 :(得分:0)
坏,坏,坏。您不希望尝试更新正在执行其触发器的表。您只需要更新感兴趣的“:new”字段即可。也许是这样的:
CREATE TRIGGER
updatetrigger12345
BEFORE INSERT ON
shares_amount
FOR EACH ROW
BEGIN
:NEW.date_end := :NEW.date_start-1;
END
;
/
这是tutorial。另外,如果不需要,我会尽量远离使用触发器。肯定存在有意义的情况;然而,它们可能会被滥用,并导致许多混乱和问题。请阅读这篇经典的AskTom文章The Trouble With Triggers。