| Précédent | Niveau supérieur | Suivant |
| 9.28. Fonctions trigger | Sommaire | 9.30. Fonctions d'informations statistiques |
PostgreSQL fournit des fonctions d'aide pour récupérer des informations sur les triggers d'événement.
Pour plus d'informations sur les triggers d'événement, voir Chapitre 39.
pg_event_trigger_ddl_commands() →setof record
pg_event_trigger_ddl_commands renvoie une liste de
commandes DDL exécutées par chaque action utilisateur,
lorsqu'elles sont appelées dans une fonction attachée à un trigger
d'événement ddl_command_end. Si appelé d'un autre
contexte, une erreur est levée.
pg_event_trigger_ddl_commands renvoie une ligne pour
chaque commande de base exécutée ; certaines commandes qui sont une
simple phrase SQL pourraient renvoyer plus d'une ligne. Cette fonction
renvoie les colonnes suivantes :
| Nom | Type | Description |
|---|---|---|
classid | oid | OID du catalogue d'appartenance de l'objet |
objid | oid | OID de l'objet lui-même |
objsubid | integer | identifiant du sous-objet (par exemple, le numéro d'attribut pour une colonne) |
command_tag | text | Balise de commande |
object_type | text | Type de l'objet |
schema_name | text |
Nom du schéma d'appartenance de l'objet, s'il existe ;
sinon NULL. Aucun guillemet n'est utilisé.
|
object_identity | text | Texte indiquant l'identité de l'objet, qualifié du schéma. Chaque identifiant inclus dans l'identifié est entre guillemets si nécessaire. |
in_extension | boolean | True si la commande fait partie d'un script d'extension |
command | pg_ddl_command | Une représentation complète de la commande dans le format interne. Ceci ne peut être affiché directement mais peut être passé à d'autres fonctions pour obtenir différentes pièces d'information sur la commande. |
pg_event_trigger_dropped_objects() →setof record
pg_event_trigger_dropped_objects renvoie une liste de
tous les objets supprimés par la commande pour laquelle l'événement
sql_drop a été appelé. Si elle est appelée dans un
autre contexte, une erreur est levée. Cette fonction renvoie les colonnes
suivantes :
| Nom | Type | Description |
|---|---|---|
classid | oid | OID du catalogue d'appartenance de l'objet |
objid | oid | OID de l'objet lui-même |
objsubid | integer | Identifiant du sous-objet (par exemple le numéro d'attribut d'une colonne) |
original | boolean | True s'il s'agit d'un des objets racines de la suppression |
normal | boolean | True s'il y avait une relation de dépendance normale dans le graphe de dépendance amenant à cet objet |
is_temporary | boolean | True si c'était un objet temporaire |
object_type | text | Type de l'objet |
schema_name | text |
Nom du schéma d'appartenance de l'objet, s'il existe ;
sinon NULL. Aucun guillemet n'est utilisé.
|
object_name | text |
Nom de l'objet, si la combinaison du schéma et du nom peut être
utilisée comme un identifiant unique pour l'objet ; sinon
NULL. Aucun guillemet n'est utilisé, et le nom
n'est jamais qualifié du schéma.
|
object_identity | text | Texte indiquant l'identité de l'objet, qualifié du schéma. Chaque identifiant inclus dans l'identifié est entre guillemets si nécessaire. |
address_names | text[] |
Un tableau qui, avec object_type et
address_args, peut être utilisé dans la fonction
pg_get_object_address pour recréer l'adresse de
l'objet dans un serveur distant contenant un objet nommé de façon
identique et de même type.
|
address_args | text[] |
Complément pour address_names
|
La fonction pg_event_trigger_dropped_objects peut être
utilisée dans un trigger d'événement tel que :
CREATE FUNCTION test_event_trigger_for_drops() RETURNS event_trigger LANGUAGE plpgsql AS $$ DECLARE obj record; BEGIN FOR obj IN SELECT * FROM pg_event_trigger_dropped_objects() LOOP RAISE NOTICE '% dropped object: % %.% %', tg_tag, obj.object_type, obj.schema_name, obj.object_name, obj.object_identity; END LOOP; END $$; CREATE EVENT TRIGGER test_event_trigger_for_drops ON sql_drop EXECUTE FUNCTION test_event_trigger_for_drops();
Les fonctions listées dans Tableau 9.98 fournissent des
informations sur une table pour laquelle l'événement
table_rewrite a été justement appelé. Si appelée dans
un autre contexte, une erreur est levée.
Tableau 9.98. Fonctions d'informations sur la réécriture de table
Fonction Description |
|---|
Renvoie l'OID de la table à réécrire. |
Renvoie un code expliquant les raisons de la réécriture. La valeur est un
champ de bits construit à partir des valeurs suivantes :
|
Ces fonctions peuvent être utilisées dans un trigger d'événement ainsi :
CREATE FUNCTION test_event_trigger_table_rewrite_oid() RETURNS event_trigger LANGUAGE plpgsql AS $$ BEGIN RAISE NOTICE 'rewriting table % for reason %', pg_event_trigger_table_rewrite_oid()::regclass, pg_event_trigger_table_rewrite_reason(); END; $$; CREATE EVENT TRIGGER test_table_rewrite_oid ON table_rewrite EXECUTE FUNCTION test_event_trigger_table_rewrite_oid();