帮忙看看这个触发器有什么问题?
CREATE OR REPLACE TRIGGER TG_ON_FILE_UPDATE
AFTER UPDATE ON SPM_FILE
FOR EACH ROW
BEGIN
update com_basicinfo b set b.usedspace = (select sum(filesize) from spm_file where resourceid=b.id) where b.id=:NEW.RESOURCEID;END TG_ON_FILE_UPDATE;

解决方案 »

  1.   


    CREATE OR REPLACE TRIGGER TG_ON_FILE_UPDATE
    AFTER UPDATE ON SPM_FILE
    FOR EACH ROW
    BEGIN
    update com_basicinfo b set b.usedspace = (select sum(filesize) from spm_file where resourceid=b.id) where b.id=:NEW.RESOURCEID;END 
    加了自治事务,因为更新又关联到另一个触发器:
    CREATE OR REPLACE TRIGGER "TG_ON_RESOURCE_UPDATE"
    AFTER UPDATE ON COM_BASICINFO
    FOR EACH ROW
    BEGIN
    update com_basicinfo set usedspace = usedspace-:OLD.USEDSPACE where id=:OLD.GROUPID;
    update com_basicinfo set usedspace = usedspace+:NEW.USEDSPACE where id=:NEW.GROUPID;
    END;这样就报等待资源时检测到死锁
      

  2.   

    你这个,应该使用两个触发器,一个行级的,一个表级;行级的记录下这些新增记录的 ID , 表级的去更新你的 com_basicinfo  表;