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

Em um gatilho Oracle, posso atribuir novo e antigo a uma variável de tipo de linha?


Não, você não pode. :new e :old são pseudo-registros, não registros reais que você pode atribuir a uma variável local. Se suas tabelas foram baseadas em tipos de objetos, :new e :old seriam então instâncias reais do tipo de objeto específico que pode ser passado como qualquer outro objeto. Mas é bem improvável que valha a pena definir suas tabelas em termos de objetos apenas para tornar seus gatilhos mais fáceis de escrever.

Você pode, é claro, escrever um pacote PL/SQL que gere automaticamente o código de gatilho que você deseja fazendo coisas como consultar o dicionário de dados (ou seja, all_tab_columns para obter a lista de colunas em uma tabela) e usando SQL dinâmico. Dependendo do número de gatilhos que você espera escrever, isso pode ser mais fácil do que escrever e manter uma tonelada de código semelhante.