mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
This patch implements FOR EACH STATEMENT triggers, per my email to
-hackers a couple days ago.
Notes/caveats:
- added regression tests for the new functionality, all
regression tests pass on my machine
- added pg_dump support
- updated PL/PgSQL to support per-statement triggers; didn't
look at the other procedural languages.
- there's (even) more code duplication in trigger.c than there
was previously. Any suggestions on how to refactor the
ExecXXXTriggers() functions to reuse more code would be
welcome -- I took a brief look at it, but couldn't see an
easy way to do it (there are several subtly-different
versions of the code in question)
- updated the documentation. I also took the liberty of
removing a big chunk of duplicated syntax documentation in
the Programmer's Guide on triggers, and moving that
information to the CREATE TRIGGER reference page.
- I also included some spelling fixes and similar small
cleanups I noticed while making the changes. If you'd like
me to split those into a separate patch, let me know.
Neil Conway
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: parsenodes.h,v 1.216 2002/11/19 23:21:59 tgl Exp $
|
||||
* $Id: parsenodes.h,v 1.217 2002/11/23 03:59:09 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -1048,11 +1048,7 @@ typedef struct CreateTrigStmt
|
||||
List *args; /* list of (T_String) Values or NIL */
|
||||
bool before; /* BEFORE/AFTER */
|
||||
bool row; /* ROW/STATEMENT */
|
||||
char actions[4]; /* Insert, Update, Delete */
|
||||
char *lang; /* currently not used, always NULL */
|
||||
char *text; /* AS 'text' */
|
||||
List *attr; /* UPDATE OF a, b,... (NI) or NULL */
|
||||
char *when; /* WHEN 'a > 10 ...' (NI) or NULL */
|
||||
char actions[3]; /* Insert, Update, Delete */
|
||||
|
||||
/* The following are used for referential */
|
||||
/* integrity constraint triggers */
|
||||
|
||||
Reference in New Issue
Block a user