aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2013-06-24 20:07:41 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2013-06-24 20:07:41 +0100
commitb577a57d4113bcbd1a7900b78b3e41df528c9a35 (patch)
tree9ce0abf8a6a9141bdba30459c7deb8979e62c4e7 /src/backend/parser
parentce18b011596389cbff1589494411643f995b0421 (diff)
downloadpostgresql-b577a57d4113bcbd1a7900b78b3e41df528c9a35.tar.gz
postgresql-b577a57d4113bcbd1a7900b78b3e41df528c9a35.zip
ALTER TABLE ... ALTER CONSTRAINT for FKs
Allow constraint attributes to be altered, so the default setting of NOT DEFERRABLE can be altered to DEFERRABLE and back. Review by Abhijit Menon-Sen
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 50942267500..5e7db52cebc 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -1941,6 +1941,21 @@ alter_table_cmd:
n->def = $2;
$$ = (Node *)n;
}
+ /* ALTER TABLE <name> ALTER CONSTRAINT ... */
+ | ALTER CONSTRAINT name ConstraintAttributeSpec
+ {
+ AlterTableCmd *n = makeNode(AlterTableCmd);
+ Constraint *c = makeNode(Constraint);
+ n->subtype = AT_AlterConstraint;
+ n->def = (Node *) c;
+ c->contype = CONSTR_FOREIGN; /* others not supported, yet */
+ c->conname = $3;
+ processCASbits($4, @4, "ALTER CONSTRAINT statement",
+ &c->deferrable,
+ &c->initdeferred,
+ NULL, NULL, yyscanner);
+ $$ = (Node *)n;
+ }
/* ALTER TABLE <name> VALIDATE CONSTRAINT ... */
| VALIDATE CONSTRAINT name
{