Re: orphaned RI constraints

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Somazx Interesting <somazx(at)home(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: orphaned RI constraints
Date: 2001-07-06 20:30:33
Message-ID: Pine.BSF.4.21.0107061327170.75952-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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";

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Somazx Interesting 2001-07-06 20:43:24 Re: orphaned RI constraints
Previous Message Tom Lane 2001-07-06 20:18:15 Re: orphaned RI constraints