2 x duplicate key value violation: which exception comes first ?

Started by Marc Maminabout 14 years ago2 messagesgeneral
Jump to latest
#1Marc Mamin
M.Mamin@intershop.de

Hello,

I've a table with 1 primary key and 1 unique index.

I would like to handle differently the duplicate key violations
depending on which constraints are affected.
(Within a plpgsql CATCH block, using SQLERRM).

It seems, that when both constraints would be violated, the exception is
always about the primary key.

Can I rely on that or should I expect the exception order being random ?

Thanks,

Marc Mamin

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Marc Mamin (#1)
Re: 2 x duplicate key value violation: which exception comes first ?

"Marc Mamin" <M.Mamin@intershop.de> writes:

I've a table with 1 primary key and 1 unique index.

I would like to handle differently the duplicate key violations
depending on which constraints are affected.
(Within a plpgsql CATCH block, using SQLERRM).

It seems, that when both constraints would be violated, the exception is
always about the primary key.

Can I rely on that or should I expect the exception order being random ?

Offhand I think the indexes will be inserted into in OID order, which
would typically be creation order, except after a wraparound. If you
rely on this you can expect your code to break sooner or later.

regards, tom lane