Re: orphaned RI constraints - Mailing list pgsql-general

From Stephan Szabo
Subject Re: orphaned RI constraints
Date
Msg-id Pine.BSF.4.21.0107061327170.75952-100000@megazone23.bigpanda.com
Whole thread Raw
In response to orphaned RI constraints  (Somazx Interesting <somazx@home.com>)
List pgsql-general
On Fri, 6 Jul 2001, Somazx Interesting wrote:

>
> I'm working with two different postgres installations - they're both
> v7.1.2. On one I can drop a table and the related constraint info seems to
> go away with the table, on the other the restraint trigger seems to remain
> in the system tables and then when I try to delete rows from tables once
> related to the dropped table I get errors saying the dropped tabled doesn't
> exist - which I'm interpreting as the RI trigger trying to do its thing and
> failing.
>
> Questions:
>
> 1) Is this possible, or should I look for another explanation.
>
> 2) Can I fix things by dropping the constraint info from the system tables,
> if so how? Is there a function which cleans the system tables checking for
> problems like orphaned triggers, functions and sequences?

Is it possible that the one that's failing was restored from an old dump
output?  I believe there was a problem (I think resolved) where the
triggers lost track of the other table involved after a dump/restore which
could have this effect.

To fix it, you should be able to use DROP TRIGGER on the appropriate
triggers that were created (you can find these through a select on
pg_trigger, using the tgargs to find the appropriate ones).  As a warning,
you need to double quote the trigger name, so for example if you saw the
following rows for the constraint:

  782359 | RI_ConstraintTrigger_782384 |   1654 |      9 | true      |
true           | <unnamed>     |        782372 | false        | false
|       6 |        | <unnamed>\000qqq2\000qqq\000UNSPECIFIED\000a\000a\000
  782359 | RI_ConstraintTrigger_782386 |   1655 |     17 | true      |
true           | <unnamed>     |        782372 | false        | false
|       6 |        | <unnamed>\000qqq2\000qqq\000UNSPECIFIED\000a\000a\000

you should be able to do
DROP TRIGGER "RI_ConstraintTrigger_782384";
DROP TRIGGER "RI_ConstraintTrigger_782386";


pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: orphaned RI constraints
Next
From: Somazx Interesting
Date:
Subject: Re: orphaned RI constraints