mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Add ALTER TABLE ... ALTER CONSTRAINT ... SET [NO] INHERIT
This allows to redefine an existing non-inheritable constraint to be inheritable, which allows to straighten up situations with NO INHERIT constraints so that thay can become normal constraints without having to re-verify existing data. For existing inheritance children this may require creating additional constraints, if they don't exist already. It also allows to do the opposite, if only for symmetry. Author: Suraj Kharage <suraj.kharage@enterprisedb.com> Reviewed-by: jian he <jian.universality@gmail.com> Discussion: https://postgr.es/m/CAF1DzPVfOW6Kk=7SSh7LbneQDJWh=PbJrEC_Wkzc24tHOyQWGg@mail.gmail.com
This commit is contained in:
@ -2669,6 +2669,34 @@ alter_table_cmd:
|
||||
NULL, NULL, NULL, yyscanner);
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
/* ALTER TABLE <name> ALTER CONSTRAINT SET INHERIT */
|
||||
| ALTER CONSTRAINT name SET INHERIT
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
ATAlterConstraint *c = makeNode(ATAlterConstraint);
|
||||
|
||||
n->subtype = AT_AlterConstraint;
|
||||
n->def = (Node *) c;
|
||||
c->conname = $3;
|
||||
c->alterInheritability = true;
|
||||
c->noinherit = false;
|
||||
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
/* ALTER TABLE <name> ALTER CONSTRAINT SET NO INHERIT */
|
||||
| ALTER CONSTRAINT name SET NO INHERIT
|
||||
{
|
||||
AlterTableCmd *n = makeNode(AlterTableCmd);
|
||||
ATAlterConstraint *c = makeNode(ATAlterConstraint);
|
||||
|
||||
n->subtype = AT_AlterConstraint;
|
||||
n->def = (Node *) c;
|
||||
c->conname = $3;
|
||||
c->alterInheritability = true;
|
||||
c->noinherit = true;
|
||||
|
||||
$$ = (Node *) n;
|
||||
}
|
||||
/* ALTER TABLE <name> VALIDATE CONSTRAINT ... */
|
||||
| VALIDATE CONSTRAINT name
|
||||
{
|
||||
|
Reference in New Issue
Block a user