Thread: Problem with SET CONSTRAINTS ALL DEFERRED;

Problem with SET CONSTRAINTS ALL DEFERRED;

From
Kaloyan Iliev
Date:
Hi Friends,

I am trying to postpone the foreign key constraint check till the end of 
transaction but it doesn't work.
Can anyone help me with a tip what I am doing wrong.

Thanks in advance.

Kaloyan Iliev

test=#  BEGIN;
BEGIN
test=#
test=# SET CONSTRAINTS ALL DEFERRED;
SET CONSTRAINTS
test=# DELETE FROM picture
test-#                                                          USING 
element_picture
test-#                                                          WHERE 
picture.id = element_picture.picture_id
test-#                                                                
AND element_picture.element_id = 8;
ERROR:  update or delete on "picture" violates foreign key constraint 
"picture_id" on "element_picture"
DETAIL:  Key (id)=(223) is still referenced from table "element_picture".

select version();                                           version
------------------------------------------------------------------------------------------------PostgreSQL 8.1.2 on
i386-portbld-freebsd6.0,compiled by GCC cc (GCC) 
 
3.4.4 [FreeBSD] 20050518
(1 row)



Re: Problem with SET CONSTRAINTS ALL DEFERRED;

From
Stephan Szabo
Date:
On Fri, 19 May 2006, Kaloyan Iliev wrote:

> Hi Friends,
>
> I am trying to postpone the foreign key constraint check till the end of
> transaction but it doesn't work.
> Can anyone help me with a tip what I am doing wrong.

Was the constraint created as deferrable (which is not the default)?
ALL DEFERRED actually only applies to deferrable constraints.

>
> Thanks in advance.
>
> Kaloyan Iliev
>
> test=#  BEGIN;
> BEGIN
> test=#
> test=# SET CONSTRAINTS ALL DEFERRED;
> SET CONSTRAINTS
> test=# DELETE FROM picture
> test-#                                                          USING
> element_picture
> test-#                                                          WHERE
> picture.id = element_picture.picture_id
> test-#
> AND element_picture.element_id = 8;
> ERROR:  update or delete on "picture" violates foreign key constraint
> "picture_id" on "element_picture"
> DETAIL:  Key (id)=(223) is still referenced from table "element_picture".
>
>
>  select version();
>                                             version
> ------------------------------------------------------------------------------------------------
>  PostgreSQL 8.1.2 on i386-portbld-freebsd6.0, compiled by GCC cc (GCC)
> 3.4.4 [FreeBSD] 20050518
> (1 row)
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org so that your
>        message can get through to the mailing list cleanly
>