0

我已经陷入这个问题很长一段时间了......有人可以帮助我吗?
这是我要实现的东西:我有一个表 A,A 有属性:id、count、total。这里我需要实现这样一个触发器:如果表 A 中的计数被更新,触发器会将总数设置为 1。

我的初始代码是这样的:

    CREATE OR REPLACE TRIGGER tri_A AFTER UPDATE OF count ON A
    FOR EACH ROW
    BEGIN
    UPDATE A SET total = 1 WHERE id = :new.id;
    END;
    /

这个问题是变异表。当表被更新时,表将被锁定。我搜索了答案,我尝试了 pragma automatic_transaction,但我得到了一个无效的触发器规范错误。还有其他评论说我们应该尝试使用触发器的组合来做到这一点....我不知道该怎么做

4

1 回答 1

1

假设id是主键,你不想要UPDATE表。你只想设置:new.total. 您还需要在BEFORE UPDATE触发器而不是AFTER UPDATE触发器中执行此操作。

CREATE OR REPLACE TRIGGER tri_A 
  BEFORE UPDATE OF count ON A
  FOR EACH ROW
BEGIN
  :new.total := 1;
END;
于 2013-02-23T07:09:46.043 回答