PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 13.1 » Programmation serveur » PL/Python -- Langage de procédures Python » Fonctions de déclencheurs

45.6. Fonctions de déclencheurs

Quand une fonction est utilisée par un trigger, le dictionnaire TD contient les valeurs relatives au trigger :

TD["event"]

contient l'événement sous la forme d'une chaîne : INSERT, UPDATE, DELETE, TRUNCATE.

TD["when"]

contient une chaîne valant soit BEFORE, soit AFTER soit INSTEAD OF.

TD["level"]

contient une chaîne valant soit ROW soit STATEMENT.

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

pour un trigger au niveau ligne, ces champs contiennent les lignes du trigger, l'ancienne version et la nouvelle version ; les deux champs ne sont pas forcément disponibles, ceci dépendant de l'événement qui a déclenché le trigger

TD["name"]

contient le nom du trigger.

TD["table_name"]

contient le nom de la table sur laquelle le trigger a été déclenché

TD["table_schema"]

contient le schéma de la table sur laquelle le trigger a été déclenché

TD["relid"]

contient l'OID de la table sur laquelle le trigger a été déclenché

TD["args"]

si la commande CREATE TRIGGER comprend des arguments, ils sont disponibles dans les variables allant de TD["args"][0] à TD["args"][n-1].

Si TD["when"] vaut BEFORE ou INSTEAD OF et si TD["level"] vaut ROW, vous pourriez renvoyer None ou "OK" à partir de la fonction Python pour indiquer que la ligne n'est pas modifiée, "SKIP" pour annuler l'événement ou si TD["event"] vaut INSERT ou UPDATE, vous pouvez renvoyer "MODIFY" pour indiquer que vous avez modifié la ligne. Sinon la valeur de retour est ignorée.