我已经陷入了这个问题很长一段时间了......任何人都可以帮助我吗? 这是我想要实现的东西: 我有一个表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 autonomous_transaction,但是我得到了一个无效的触发器规范错误。还有其他评论说我们应该尝试使用触发器的组合来做到这一点....我无法弄清楚如何做到这一点
答案 0 :(得分: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;