Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:aggiorna la stessa tabella su cui viene attivato il trigger

Non è necessario aggiornare nuovamente la tabella; puoi modificare i dati prima che vengano inseriti, con un trigger a livello di riga prima dell'inserimento, ad es.:

create trigger trig_pwd_date
before insert or update on temp_table
for each row
when (old.password is null and new.password is not null or new.password != old.password)
begin
  :new.pwd_change_date := systimestamp;
end;
/

db<>demo violino

Questo ha usato il new e old nomi di correlazione per decidere se il valore della password è cambiato; e il new nome della correlazione per assegnare l'ora di sistema al campo nello pseudorecord, che diventa il valore della colonna al termine dell'inserimento.

Speriamo che tu non stia memorizzando password in testo normale nella tua tabella.