diff options
| author | Simon Riggs | 2013-06-28 23:27:30 +0000 |
|---|---|---|
| committer | Simon Riggs | 2013-06-28 23:27:30 +0000 |
| commit | f177cbfe676dc2c7ca2b206c54d6bf819feeea8b (patch) | |
| tree | 00b7869b96efdafac8623134af2c35a31c3995f5 /src/backend/parser | |
| parent | 2f74e4ec50dc625605e9a7afd63bd8a48c981d9e (diff) | |
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 c41f1b512f..0fc5b13d01 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -1943,6 +1943,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 { |
