mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Provide the OR REPLACE option for CREATE TRIGGER.
This is mostly straightforward. However, we disallow replacing constraint triggers or changing the is-constraint property; perhaps that can be added later, but the complexity versus benefit tradeoff doesn't look very good. Also, no special thought is taken here for whether replacing an existing trigger should result in changes to queued-but-not-fired trigger actions. We just document that if you're surprised by the results, too bad, don't do that. (Note that any such pending trigger activity would have to be within the current session.) Takamichi Osumi, reviewed at various times by Surafel Temesgen, Peter Smith, and myself Discussion: https://postgr.es/m/0DDF369B45A1B44B8A687ED43F06557C010BC362@G01JPEXMBYT03
This commit is contained in:
@ -4304,6 +4304,8 @@ _copyCreateTrigStmt(const CreateTrigStmt *from)
|
||||
{
|
||||
CreateTrigStmt *newnode = makeNode(CreateTrigStmt);
|
||||
|
||||
COPY_SCALAR_FIELD(replace);
|
||||
COPY_SCALAR_FIELD(isconstraint);
|
||||
COPY_STRING_FIELD(trigname);
|
||||
COPY_NODE_FIELD(relation);
|
||||
COPY_NODE_FIELD(funcname);
|
||||
@ -4313,7 +4315,6 @@ _copyCreateTrigStmt(const CreateTrigStmt *from)
|
||||
COPY_SCALAR_FIELD(events);
|
||||
COPY_NODE_FIELD(columns);
|
||||
COPY_NODE_FIELD(whenClause);
|
||||
COPY_SCALAR_FIELD(isconstraint);
|
||||
COPY_NODE_FIELD(transitionRels);
|
||||
COPY_SCALAR_FIELD(deferrable);
|
||||
COPY_SCALAR_FIELD(initdeferred);
|
||||
|
@ -2011,6 +2011,8 @@ _equalCreateAmStmt(const CreateAmStmt *a, const CreateAmStmt *b)
|
||||
static bool
|
||||
_equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
|
||||
{
|
||||
COMPARE_SCALAR_FIELD(replace);
|
||||
COMPARE_SCALAR_FIELD(isconstraint);
|
||||
COMPARE_STRING_FIELD(trigname);
|
||||
COMPARE_NODE_FIELD(relation);
|
||||
COMPARE_NODE_FIELD(funcname);
|
||||
@ -2020,7 +2022,6 @@ _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
|
||||
COMPARE_SCALAR_FIELD(events);
|
||||
COMPARE_NODE_FIELD(columns);
|
||||
COMPARE_NODE_FIELD(whenClause);
|
||||
COMPARE_SCALAR_FIELD(isconstraint);
|
||||
COMPARE_NODE_FIELD(transitionRels);
|
||||
COMPARE_SCALAR_FIELD(deferrable);
|
||||
COMPARE_SCALAR_FIELD(initdeferred);
|
||||
|
Reference in New Issue
Block a user