ora-00060
E aí galera ??? beleza ??? Seguinte tenho uma trigger que é disparada toda vez que o valor do campo producao_liberada é alterado, fazendo com quem todos os outros itens ligados ao item alterado sejam producao_liberada 'n'. Agora vamos aos problemas, o primeiro problema que tive foi a famosa table mutant (ou como eu chamo, tabela com síndrome de X-Men) , mas com um Pragma Autonomous_Transaction o primeiro problema foi resolvido, porém a trigger agora acusa Deadlock, (ORA-00060). Alguém tem alguma idéia de como resolver isso ??? Código da Trigger:CREATE OR REPLACE TRIGGER TG_CADPROD AFTER UPDATE ON CADPROD FOR EACH ROW DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN ------------------------------------- -- Liberando a produção de um item -- ------------------------------------- IF :NEW.PRODUCAO_LIBERADA = 0 AND :OLD.PRODUCAO_LIBERADA = 1 THEN UPDATE CADPROD A SET A.PRODUCAO_LIBERADA = 0 WHERE A.CODIGO IN (SELECT B.N_ARCA_PRINC FROM REL_PROD_COMP B WHERE B.N_ARCA_COMP = :NEW.CODIGO); UPDATE CADPROD A SET A.PRODUCAO_LIBERADA = 0 WHERE A.CODIGO IN (SELECT B.N_ARCA_COMP FROM REL_PROD_COMP B WHERE B.N_ARCA_PRINC = :NEW.CODIGO); COMMIT; END IF; ------------------------------------- -- Trancando a produção de um item -- ------------------------------------- IF :NEW.PRODUCAO_LIBERADA = 1 AND :OLD.PRODUCAO_LIBERADA = 0 THEN UPDATE CADPROD A SET A.PRODUCAO_LIBERADA = 1 WHERE A.CODIGO IN (SELECT B.N_ARCA_PRINC FROM REL_PROD_COMP B WHERE B.N_ARCA_COMP = :NEW.CODIGO); UPDATE CADPROD A SET A.PRODUCAO_LIBERADA = 1 WHERE A.CODIGO IN (SELECT B.N_ARCA_COMP FROM REL_PROD_COMP B WHERE B.N_ARCA_PRINC = :NEW.CODIGO); COMMIT; END IF;END TG_CADPRODValew Galera
Discussão (1)
Carregando comentários...