mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
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.
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user