diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2009-06-18 01:27:02 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2009-06-18 01:27:02 +0000 |
commit | f08e5e92e8d494d8d90c1b0f6584b576c01da75f (patch) | |
tree | fa6da47185e4abc1291aceaba2d892ee3648076c /src/backend/commands/tablecmds.c | |
parent | c30446b9c901b357f9a7b859c51bee5740ac313f (diff) | |
download | postgresql-f08e5e92e8d494d8d90c1b0f6584b576c01da75f.tar.gz postgresql-f08e5e92e8d494d8d90c1b0f6584b576c01da75f.zip |
Fix the just-reported problem that you can't specify all four trigger event
types in CREATE TRIGGER. While at it, clean up the amazingly tedious and
inextensible way that the trigger event type list was handled. Per report
from Greg Sabino Mullane.
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r-- | src/backend/commands/tablecmds.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index f75261160e7..f22e7be5d88 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.287 2009/06/11 20:46:11 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.288 2009/06/18 01:27:02 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -5206,14 +5206,13 @@ CreateFKCheckTrigger(RangeVar *myRel, FkConstraint *fkconstraint, if (on_insert) { fk_trigger->funcname = SystemFuncName("RI_FKey_check_ins"); - fk_trigger->actions[0] = 'i'; + fk_trigger->events = TRIGGER_TYPE_INSERT; } else { fk_trigger->funcname = SystemFuncName("RI_FKey_check_upd"); - fk_trigger->actions[0] = 'u'; + fk_trigger->events = TRIGGER_TYPE_UPDATE; } - fk_trigger->actions[1] = '\0'; fk_trigger->isconstraint = true; fk_trigger->deferrable = fkconstraint->deferrable; @@ -5263,9 +5262,7 @@ createForeignKeyTriggers(Relation rel, FkConstraint *fkconstraint, fk_trigger->relation = fkconstraint->pktable; fk_trigger->before = false; fk_trigger->row = true; - fk_trigger->actions[0] = 'd'; - fk_trigger->actions[1] = '\0'; - + fk_trigger->events = TRIGGER_TYPE_DELETE; fk_trigger->isconstraint = true; fk_trigger->constrrel = myRel; switch (fkconstraint->fk_del_action) @@ -5316,8 +5313,7 @@ createForeignKeyTriggers(Relation rel, FkConstraint *fkconstraint, fk_trigger->relation = fkconstraint->pktable; fk_trigger->before = false; fk_trigger->row = true; - fk_trigger->actions[0] = 'u'; - fk_trigger->actions[1] = '\0'; + fk_trigger->events = TRIGGER_TYPE_UPDATE; fk_trigger->isconstraint = true; fk_trigger->constrrel = myRel; switch (fkconstraint->fk_upd_action) |