Non, vous ne pouvez pas. :new
et :old
sont des pseudo-enregistrements, et non des enregistrements réels, que vous pouvez affecter à une variable locale. Si vos tables étaient basées sur des types d'objets, :new
et :old
seraient alors des instances réelles du type d'objet particulier qui peuvent être transmises comme n'importe quel autre objet. Mais il est peu probable que cela vaille la peine de définir vos tables en termes d'objets juste pour faciliter l'écriture de vos déclencheurs.
Vous pouvez, bien sûr, écrire un package PL/SQL qui génère automatiquement le code de déclenchement que vous voulez en faisant des choses comme interroger le dictionnaire de données (c'est-à-dire all_tab_columns
pour obtenir la liste des colonnes d'une table) et en SQL dynamique. Selon le nombre de déclencheurs que vous pensez avoir à écrire, cela peut être plus facile que d'écrire et de maintenir une tonne de code similaire.