PostgreSQL
9.29. Event Trigger Functions
PostgreSQL provides these helper functions to retrieve information from event triggers.
For more information about event triggers, see Chapter 39.
9.29.1. Capturing Changes at Command End
pg_event_trigger_ddl_commands () → setof record
pg_event_trigger_ddl_commands
returns a list of DDL commands executed by each user action, when invoked in a function attached to a ddl_command_end
event trigger. If called in any other context, an error is raised. pg_event_trigger_ddl_commands
returns one row for each base command executed; some commands that are a single SQL sentence may return more than one row. This function returns the following columns:
Name | Type | Description |
---|---|---|
|
|
OID of catalog the object belongs in |
|
|
OID of the object itself |
|
|
Sub-object ID (e.g., attribute number for a column) |
|
|
Command tag |
|
|
Type of the object |
|
|
Name of the schema the object belongs in, if any; otherwise |
|
|
Text rendering of the object identity, schema-qualified. Each identifier included in the identity is quoted if necessary. |
|
|
True if the command is part of an extension script |
|
|
A complete representation of the command, in internal format. This cannot be output directly, but it can be passed to other functions to obtain different pieces of information about the command. |
9.29.2. Processing Objects Dropped by a DDL Command
pg_event_trigger_dropped_objects () → setof record
pg_event_trigger_dropped_objects
returns a list of all objects dropped by the command in whose sql_drop
event it is called. If called in any other context, an error is raised. This function returns the following columns:
Name | Type | Description |
---|---|---|
|
|
OID of catalog the object belonged in |
|
|
OID of the object itself |
|
|
Sub-object ID (e.g., attribute number for a column) |
|
|
True if this was one of the root object(s) of the deletion |
|
|
True if there was a normal dependency relationship in the dependency graph leading to this object |
|
|
True if this was a temporary object |
|
|
Type of the object |
|
|
Name of the schema the object belonged in, if any; otherwise |
|
|
Name of the object, if the combination of schema and name can be used as a unique identifier for the object; otherwise |
|
|
Text rendering of the object identity, schema-qualified. Each identifier included in the identity is quoted if necessary. |
|
|
An array that, together with |
|
|
Complement for |
The pg_event_trigger_dropped_objects
function can be used in an event trigger like this:
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();
9.29.3. Handling a Table Rewrite Event
The functions shown in Table 9.98 provide information about a table for which a table_rewrite
event has just been called. If called in any other context, an error is raised.
Table 9.98. Table Rewrite Information Functions
Function Description |
---|
`+pg_event_trigger_table_rewrite_oid+` () → `+oid+` Returns the OID of the table about to be rewritten. |
`+pg_event_trigger_table_rewrite_reason+` () → `+integer+` Returns a code explaining the reason(s) for rewriting. The exact meaning of the codes is release dependent. |
+
These functions can be used in an event trigger like this:
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();
Prev | Up | Next |
---|---|---|
9.28. Trigger Functions |
9.30. Statistics Information Functions |
Submit correction
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.
Copyright © 1996-2023 The PostgreSQL Global Development Group