Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Hibernate + Orakelsequenz + Trigger

Antwort gefunden unter HIbernate-Problem mit Oracle-Trigger zum Generieren einer ID aus einer Sequenz

Ich muss meinen Trigger so anpassen, dass er nur ausgeführt wird, wenn keine ID angegeben ist:

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) Diese Zeile ermöglicht es Hibernate, A_SEQ.nextVal manuell aufzurufen, um die ID festzulegen und dann den Trigger zu umgehen, sonst erhält Hibernate das nextval für nutzlos, da der Trigger die ID immer zurücksetzt und nextval erneut aufruft