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

Hibernar + sequência de oráculo + gatilho


Resposta encontrada em Problema de hibernação com o Oracle Trigger para gerar id de uma sequência

Eu preciso adaptar meu gatilho para ser executado apenas se nenhum ID for fornecido:
CREATE OR REPLACE TRIGGER A_TRG
BEFORE INSERT
ON A REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
WHEN (New.IDS is null) -- (1)
BEGIN
  :new.IDS := A_SEQ.nextval;
END A_TRG;
/

(1) esta linha permite que o Hibernate chame manualmente A_SEQ.nextVal para definir o ID e, em seguida, ignore o gatilho, senão o Hibernate obterá o nextval inutilmente porque o gatilho sempre redefinirá o ID chamando o nextval novamente