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

Dans un déclencheur Oracle, puis-je affecter new et old à une variable rowtype ?

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.