NOT DEFERRABLE constraints are checked before command finishes

Поиск
Список
Период
Сортировка
От PG Doc comments form
Тема NOT DEFERRABLE constraints are checked before command finishes
Дата
Msg-id 162620735306.699.15544461247317554611@wrigleys.postgresql.org
обсуждение исходный текст
Ответы Re: NOT DEFERRABLE constraints are checked before command finishes  (Pantelis Theodosiou <ypercube@gmail.com>)
Список pgsql-docs
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/13/sql-createtable.html
Description:

According to the docs:

A constraint that is not deferrable will be checked immediately after every
command.

But this is the behavior I observe on PG 13.3:

create table t (n int primary key);
insert into t values (1), (2), (3);
update t set n = n + 1;
ERROR:  23505: duplicate key value violates unique constraint "t_pkey"
DETAIL:  Key (n)=(2) already exists.

If the constraint was checked *after* the command it should work. It appears
it is checked before the command has finished.

In contrast a DEFERRABLE INITIALLY IMMEDIATE constraint which is documented
as "If the constraint is INITIALLY IMMEDIATE, it is checked after each
statement." behaves as expected.

create table t (n int primary key deferrable initially immediate);
insert into t values (1), (2), (3);
update t set n = n + 1; --> UPDATE 3

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

Предыдущее
От: Ekaterina Kiryanova
Дата:
Сообщение: Minor doc fixes
Следующее
От: Daniel Gustafsson
Дата:
Сообщение: Re: Minor doc fixes