44.5. Funciones de disparo (Triggers) #

Cuando una función se utiliza como un disparador (trigger), el diccionario TD contiene valores relacionados con el disparador:

TD["event"]

contiene el evento como una cadena: INSERT, UPDATE, DELETE o TRUNCATE.

TD["when"]

contiene uno de BEFORE, AFTER o INSTEAD OF.

TD["level"]

contiene ROW o STATEMENT.

TD["new"]
TD["old"]

Para un disparador a nivel de fila, uno o ambos campos contienen las filas correspondientes del disparador, según el evento del disparador.

TD["name"]

contiene el nombre del disparador.

TD["table_name"]

contiene el nombre de la tabla en la que ocurrió el disparador.

TD["table_schema"]

contiene el esquema de la tabla en la que ocurrió el disparador.

TD["relid"]

contiene el OID de la tabla en la que ocurrió el disparador.

TD["args"]

Si el comando CREATE TRIGGER incluyó argumentos, están disponibles desde TD["args"][0] hasta TD["args"][n-1].

Si TD["when"] es BEFORE o INSTEAD OF y TD["level"] es ROW, puedes devolver None o "OK" desde la función de Python para indicar que la fila no se ha modificado, "SKIP" para abortar el evento, o si TD["event"] es INSERT o UPDATE puedes devolver "MODIFY" para indicar que has modificado la nueva fila. De lo contrario, el valor de retorno es ignorado.