Обсуждение: Removing a constraint?

Поиск
Список
Период
Сортировка

Removing a constraint?

От
Michael Davis
Дата:
Does anyone know how to completely and accurately remove or drop a
constraint, specifically a foreign key constraint?  I tried to remove a
constraint by deleting it's trigger from pg_triggers.  This caused some
undesirable side effects with other tables involved with the constraint.  I
have several tables that I need to change the column constraints and
foreign key constraints on.  Recreating (drop and create) the table every
time I need to change a column constraint is a pain because all the objects
that reference the table would also need to be recreated (i.e. views and
triggers).  How do production DBAs successfully make changes to their
tables?

FYI, I was able to alter table add the same constraint many times.  Is this
a problem?  This created a new trigger in pg_triggers every time.


Re: [SQL] Removing a constraint?

От
Stephan Szabo
Дата:
It should work if you remove all three triggers for the constraint
using drop trigger, don't delete rows from pg_trigger unless you go
through and manually change the row in pg_class for the relation
the trigger is for.

On Mon, 1 Jan 2001, Michael Davis wrote:

> Does anyone know how to completely and accurately remove or drop a
> constraint, specifically a foreign key constraint?  I tried to remove a
> constraint by deleting it's trigger from pg_triggers.  This caused some
> undesirable side effects with other tables involved with the constraint.  I
> have several tables that I need to change the column constraints and
> foreign key constraints on.  Recreating (drop and create) the table every
> time I need to change a column constraint is a pain because all the objects
> that reference the table would also need to be recreated (i.e. views and
> triggers).  How do production DBAs successfully make changes to their
> tables?
>
> FYI, I was able to alter table add the same constraint many times.  Is this
> a problem?  This created a new trigger in pg_triggers every time.