sql >> Base de Datos >  >> RDS >> Oracle

Hibernate + secuencia de Oracle + disparador

Respuesta encontrada en Problema de HIbernate con Oracle Trigger para generar una identificación a partir de una secuencia

Necesito adaptar mi disparador para que se ejecute solo si no se proporciona una identificación:

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 línea le permite a Hibernate llamar manualmente a A_SEQ.nextVal para establecer la ID y luego omitir el disparador; de lo contrario, Hibernate obtendrá el nextval inútilmente porque el disparador siempre restablecerá la ID llamando a nextval nuevamente