2013-02-23 57 views
0

我已经陷入了这个问题相当长的时间....任何人都可以帮助我吗?
这里是我想要实现的东西: 我有一个表A,A有属性:id,count,total。在这里,我需要实现这样的触发:如果表格中的计数更新,触发将全部设置为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; 
    /

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

回答

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; 
+0

你是对的!非常感谢你!!!我不敢相信我浪费了太多时间在错误的方向上...... – faz 2013-02-23 07:24:12