From f925c79b9f36c54b67053ade5ad225a75b8dc803 Mon Sep 17 00:00:00 2001 From: Robert Haas <rhaas@postgresql.org> Date: Wed, 23 Jan 2013 09:17:20 -0500 Subject: [PATCH] Further documentation tweaks for event triggers. Per discussion between Dimitri Fontaine, myself, and others. --- doc/src/sgml/event-trigger.sgml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/doc/src/sgml/event-trigger.sgml b/doc/src/sgml/event-trigger.sgml index 48703713d77..71241c82245 100644 --- a/doc/src/sgml/event-trigger.sgml +++ b/doc/src/sgml/event-trigger.sgml @@ -41,14 +41,20 @@ mechanism does not support these object types. <literal>ddl_command_start</> also occurs just before the execution of a <literal>SELECT INTO</literal> command, since this is equivalent to - <literal>CREATE TABLE AS</literal>. + <literal>CREATE TABLE AS</literal>. The <literal>ddl_command_end</> + event occurs just after the execution of this same set of commands. </para> <para> - The <literal>ddl_command_end</> event occurs just before returning - control from the execution of a <literal>CREATE</>, <literal>ALTER</>, - or <literal>DROP</> command. It shares the same exceptions as - the <literal>ddl_command_start</> event. + Event triggers (like other functions) cannot be executed in an aborted + transaction. Thus, if a DDL command fails with an error, any associated + <literal>ddl_command_end</> triggers will not be executed. Conversely, + if a <literal>ddl_command_start</> trigger fails with an error, no + further event triggers will fire, and no attempt will be made to execute + the command itself. Similarly, if a <literal>ddl_command_end</> trigger + fails with an error, the effects of the DDL statement will be rolled + back, just as they would be in any other case where the containing + transaction aborts. </para> <para> -- GitLab