Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle:gatilho de incremento automático.


Ok, acho que entendi o que está acontecendo. A resposta à sua pergunta é um enorme sim . Pode haver um grande impacto se você desabilitar esse gatilho.

A razão pela qual esse gatilho parece existir é lidar com a situação em que um valor de chave primária não fornecido em uma inserção em sua tabela. Se isso ocorrer em qualquer lugar em seu código, remover o gatilho quebrará essas inserções.

Você tem que fazer duas coisas.

  1. Corrija o gatilho, obviamente está quebrado; consertá-lo:
    CREATE OR REPLACE TRIGGER  BI_PRIVILEGE
      before insert on PRIVILEGE              
      for each row  
    begin   
      if :NEW.PRIVILEGE_ID is null then 
        select PRIVILEGE_SEQ.nextval into :NEW.PRIVILEGE_ID from dual; 
      end if; 
    end; 
    

    Se você estiver usando o Oracle 11G ou superior, poderá usar isso:
      if :NEW.PRIVILEGE_ID is null then 
        :NEW.PRIVILEGE_ID := PRIVILEGE_SEQ.nextval; 
      end if; 
    

  2. Descubra se isso realmente acontece. Se você inserir registros sem uma chave primária, precisará descobrir por que isso está acontecendo e se o comportamento está correto. Se for você está preso com o gatilho, caso contrário, conserte isso. Se você nunca inserir registros sem uma chave primária, poderá desabilitar o gatilho.

    A maneira mais rápida de descobrir pode ser desabilitar o gatilho de qualquer maneira, mas isso quebraria suas inserções. Se este for um banco de dados de produção, somente você poderá dizer se vale a pena. Eu não faria pessoalmente.