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

En un activador de Oracle, ¿puedo asignar nuevos y antiguos a una variable de tipo de fila?

No, no puedes. :new y :old son pseudo-registros, no registros reales que puede asignar a una variable local. Si sus tablas se basaron en tipos de objetos, :new y :old entonces serían instancias reales del tipo de objeto particular que se pueden pasar como cualquier otro objeto. Pero es bastante improbable que valga la pena definir sus tablas en términos de objetos solo para hacer que sus disparadores sean más fáciles de escribir.

Por supuesto, podría escribir un paquete PL/SQL que genere automáticamente el código de activación que desea haciendo cosas como consultar el diccionario de datos (es decir, all_tab_columns para obtener la lista de columnas en una tabla) y usando SQL dinámico. Dependiendo de la cantidad de disparadores que espera tener que escribir, esto puede ser más fácil que escribir y mantener una tonelada de código similar.