Re: Which record causes referential integrity violation on delete

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Andrus" <noeetasoftspam(at)online(dot)ee>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Which record causes referential integrity violation on delete
Date: 2005-07-02 16:36:49
Message-ID: 12340.1120322209@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

"Andrus" <noeetasoftspam(at)online(dot)ee> writes:
> ERROR: update or delete on "customer" violates foreign key constraint
> "invoice_customer_fkey" on "invoice"'

> How to determine the primary key of invoice table which causes this error
> in generic way ?

There is no generic way to do that, because the question makes an
assumption that isn't generic; in fact two of them. One, that there
is only one row of invoice referencing this customer row; and two,
that invoice even has a primary key, which is certainly not implied
by the existence of an FK reference to customer.

If your intention is to perform some generic action like deleting all
the referencing rows, you may well find that marking the foreign key
reference ON DELETE CASCADE (or one of the other available options)
would solve the problem without needing to add any client-side logic.

regards, tom lane

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Greg Stark 2005-07-02 16:44:54 Re: Advice on structure /sequence / trigger
Previous Message Martijn van Oosterhout 2005-07-02 15:01:48 Re: wrong sort order