Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle - mettre à jour la même table sur laquelle le déclencheur est déclenché

Vous n'avez pas besoin de mettre à jour la table à nouveau ; vous pouvez modifier les données avant qu'elles ne soient insérées, avec un déclencheur au niveau de la ligne avant l'insertion, par exemple :

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<>démo de violon

Cela a utilisé le new et old noms de corrélation pour décider si la valeur du mot de passe a changé ; et le new nom de corrélation pour attribuer l'heure système au champ du pseudo-enregistrement, qui devient la valeur de la colonne une fois l'insertion terminée.

J'espère que vous ne stockez pas de mots de passe en texte brut dans votre table.