|
41 | 41 | mechanism does not support these object types.
|
42 | 42 | <literal>ddl_command_start</> also occurs just before the execution of a
|
43 | 43 | <literal>SELECT INTO</literal> command, since this is equivalent to
|
44 |
| - <literal>CREATE TABLE AS</literal>. |
| 44 | + <literal>CREATE TABLE AS</literal>. The <literal>ddl_command_end</> |
| 45 | + event occurs just after the execution of this same set of commands. |
45 | 46 | </para>
|
46 | 47 |
|
47 | 48 | <para>
|
48 |
| - The <literal>ddl_command_end</> event occurs just before returning |
49 |
| - control from the execution of a <literal>CREATE</>, <literal>ALTER</>, |
50 |
| - or <literal>DROP</> command. It shares the same exceptions as |
51 |
| - the <literal>ddl_command_start</> event. |
| 49 | + Event triggers (like other functions) cannot be executed in an aborted |
| 50 | + transaction. Thus, if a DDL command fails with an error, any associated |
| 51 | + <literal>ddl_command_end</> triggers will not be executed. Conversely, |
| 52 | + if a <literal>ddl_command_start</> trigger fails with an error, no |
| 53 | + further event triggers will fire, and no attempt will be made to execute |
| 54 | + the command itself. Similarly, if a <literal>ddl_command_end</> trigger |
| 55 | + fails with an error, the effects of the DDL statement will be rolled |
| 56 | + back, just as they would be in any other case where the containing |
| 57 | + transaction aborts. |
52 | 58 | </para>
|
53 | 59 |
|
54 | 60 | <para>
|
|