Обсуждение: is there a way to DROP foreign key constraint ?
I'm unable to find the complementary function to ALTER TABLE t ADD FOREIGN KEY(id) REFERENCES pkt(pk); I would try DROP TRIGGER, but I've also been unable to find a way to name the constraint ;( the built-in help is both inadequate and inconsistent ----8<---------8<---------8<-------------8<-----8<---------8<----- amphora2=# \h alter table Command: ALTER TABLE Description: Modifies table properties Syntax: ALTER TABLE table [ * ] ADD [ COLUMN ] column type ALTER TABLE table [ * ] ALTER [ COLUMN ] column { SET DEFAULT value | DROP DEFAULT } ALTER TABLE table [ * ] RENAME [ COLUMN ] column TO newcolumn ALTER TABLE table RENAME TO newtable ALTER TABLE table ADD table constraint definition amphora2=# \h create table Command: CREATE TABLE Description: Creates a new table Syntax: CREATE [ TEMPORARY | TEMP ] TABLE table ( column type [ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ] [column_constraint_clause| PRIMARY KEY } [ ... ] ] [, ... ] [, PRIMARY KEY ( column [, ...] ) ] [, CHECK ( condition) ] [, table_constraint_clause ] ) [ INHERITS ( inherited_table [, ...] ) ] amphora2=# \h column_constraint_clause No help available for 'column_constraint_clause'. Try \h with no arguments to see available help. amphora2=# \h column constraint definition No help available for 'column constraint definition'. Try \h with no arguments to see available help. ----8<---------8<---------8<-------------8<-----8<---------8<-----
On Fri, 20 Oct 2000, Hannu Krosing wrote: > I'm unable to find the complementary function to > > ALTER TABLE t ADD FOREIGN KEY(id) REFERENCES pkt(pk); Currently, ALTER TABLE ... DROP table constraint definition doesn't exist. > I would try DROP TRIGGER, but I've also been unable to > find a way to name the constraint ;( Umm, put the constraint name in the table constraint definition? From the SQL spec:<table constraint definition> ::= [ <constraint name definition> ] <table constraint> [ <constraint attributes>]<constraint name definition> ::= CONSTRAINT <constraint name> Currently, you need to drop the three triggers from pg_trigger that are associated with the constraint. Easiest way to find them if you don't have a constraint name is to look at the tg_args.
Stephan Szabo wrote: > > On Fri, 20 Oct 2000, Hannu Krosing wrote: > > > I'm unable to find the complementary function to > > > > ALTER TABLE t ADD FOREIGN KEY(id) REFERENCES pkt(pk); > > Currently, ALTER TABLE ... DROP table constraint definition > doesn't exist. > > > I would try DROP TRIGGER, but I've also been unable to > > find a way to name the constraint ;( > > Umm, put the constraint name in the table constraint definition? > >From the SQL spec: > <table constraint definition> ::= > [ <constraint name definition> ] > <table constraint> [ <constraint attributes> ] > <constraint name definition> ::= CONSTRAINT <constraint name> Thanks! I was missing the CONSTRAINT word in <constraint name definition> ------------ Hannu