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

Oracle:actualice la misma tabla en la que se activa el disparador

No necesita actualizar la tabla nuevamente; puede modificar los datos antes de que se inserten, con un activador de nivel de fila antes de insertar, por ejemplo:

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<>demostración de violín

Esto usó el new y old nombres de correlación para decidir si el valor de la contraseña ha cambiado; y el new nombre de correlación para asignar la hora del sistema al campo en el pseudoregistro, que se convierte en el valor de la columna cuando se completa la inserción.

Con suerte, no está almacenando contraseñas de texto sin formato en su tabla.