PostgreSQL значение id типа SERIAL увеличивается не смотря на CONSTRAINT

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
artemn
рядовой
Сообщения: 32
Зарегистрирован: 2007-06-15 15:09:15
Откуда: СПб
Контактная информация:

PostgreSQL значение id типа SERIAL увеличивается не смотря на CONSTRAINT

Непрочитанное сообщение artemn » 2015-10-27 13:41:47

Приветствую читатели.

Код: Выделить всё

test=# CREATE TABLE TEST (
test(# id serial PRIMARY KEY,
test(# description varchar NOT NULL UNIQUE
test(# );
CREATE TABLE
test=# INSERT INTO test (description) VALUES ('1');
INSERT 0 1
test=# SELECT * FROM test;
 id | description
----+-------------
  1 | 1
(1 строка)

test=# INSERT INTO test (description) VALUES ('1');
ERROR:  duplicate key value violates unique constraint "test_description_key"
ПОДРОБНОСТИ:  Key (description)=(1) already exists.
test=# INSERT INTO test (description) VALUES ('2');
INSERT 0 1
test=# SELECT * FROM test;
 id | description
----+-------------
  1 | 1
  3 | 2
(2 строки)

test=#


Видно что в поле id добавлено всего 2 записи, но при этом значение id типа SERIAL увеличилось не смотря на сработавший CONSTRAINT.

Вот хочу для себя понять, как это работает. И как правильней всего запретить id увеличиваться при срабатывании правил CONSTRAINT.

Neus
капитан
Сообщения: 1718
Зарегистрирован: 2008-09-08 21:59:56

PostgreSQL значение id типа SERIAL увеличивается не смотря на CONSTRAINT

Непрочитанное сообщение Neus » 2015-10-27 18:25:20

Все правильно работает.
Никак не запретишь, это автоинкрементное поле.
За подробностями в мануал или исходники.


Вернуться в «Базы данных»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость