Re: BUG #17696: Creation of deferrable initially deferred constraint breaks before transaction commit

Поиск
Список
Период
Сортировка
От Jaime Casanova
Тема Re: BUG #17696: Creation of deferrable initially deferred constraint breaks before transaction commit
Дата
Msg-id CAJKUy5jB-8ZuM3SJX9SxJLm=iKt11D0xbwd2UqG3gSv3zm1SMQ@mail.gmail.com
обсуждение исходный текст
Ответ на BUG #17696: Creation of deferrable initially deferred constraint breaks before transaction commit  (PG Bug reporting form <noreply@postgresql.org>)
Ответы Re: BUG #17696: Creation of deferrable initially deferred constraint breaks before transaction commit
Список pgsql-bugs
On Thu, Nov 24, 2022 at 11:36 AM PG Bug reporting form
<noreply@postgresql.org> wrote:
>
> The following bug has been logged on the website:
>
> Bug reference:      17696
> Logged by:          Roman Garcia
> Email address:      yzerno@gmail.com
> PostgreSQL version: 13.2
> Operating system:   linux ubuntu
> Description:
>
> Executing the following simple script:
>
> BEGIN;
> CREATE table foo (id integer primary key);
> CREATE TABLE bar(id integer, foo_id integer);
> insert into foo (id) values (1);
> insert into bar(id,foo_id) values (1, 2);
> alter table bar add constraint foo_fkey foreign key (foo_id) references
> foo(id) deferrable initially deferred;
>
> results in a constraint violation error at the constraint creation line:
> " ERROR:  insert or update on table "bar" violates foreign key constraint
> "foo_fkey" DETAIL:  Key (foo_id)=(2) is not present in table "foo". "
>
> I would have expected to get this error message later, at transaction commit
> (if no foo with id 2 have been inserted before then) instead of getting it
> at constraint creation, since the point of having an deferrable initially
> deferred constraint is to move the constraint check when the transaction is
> commited.
>

BTW, you can make this work as you expect if you mark the FK as NOT VALID:

alter table bar add constraint foo_fkey foreign key (foo_id) references
foo(id) deferrable initially deferred NOT VALID;

-- 
Jaime Casanova
Director de Servicios Profesionales
SYSTEMGUARDS



В списке pgsql-bugs по дате отправления:

Предыдущее
От: Vik Fearing
Дата:
Сообщение: Re: BUG #17696: Creation of deferrable initially deferred constraint breaks before transaction commit
Следующее
От: Jaime Casanova
Дата:
Сообщение: Re: BUG #17696: Creation of deferrable initially deferred constraint breaks before transaction commit