Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle - atualiza a mesma tabela na qual o gatilho é acionado


Você não precisa atualizar a tabela novamente; você pode modificar os dados antes de serem inseridos, com um gatilho de nível de linha antes de inserir, por exemplo:
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<>demonstração do violino

Isso usou o new e old nomes de correlação para decidir se o valor da senha foi alterado; e o new nome de correlação para atribuir a hora do sistema ao campo no pseudoregistro, que se torna o valor da coluna quando a inserção é concluída.

Espero que você não esteja armazenando senhas de texto simples em sua tabela.