diff options
author | Simon Riggs <simon@2ndQuadrant.com> | 2013-06-24 20:07:41 +0100 |
---|---|---|
committer | Simon Riggs <simon@2ndQuadrant.com> | 2013-06-24 20:07:41 +0100 |
commit | b577a57d4113bcbd1a7900b78b3e41df528c9a35 (patch) | |
tree | 9ce0abf8a6a9141bdba30459c7deb8979e62c4e7 /src/backend/parser | |
parent | ce18b011596389cbff1589494411643f995b0421 (diff) | |
download | postgresql-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.y | 15 |
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 { |