Вставка строк в таблицу, содержащую автоинкрементируемое поле стр. 3 |
||||||||||||||||||||||||||||||
MySQLMySQL не поддерживает предложения DEFAULT VALUES. Вставить строку со значениями по умолчанию в таблицу можно другим стандартным способом, используя ключевое слово DEFAULT для каждого столбца таблицы - VALUES(DEFAULT, DEFAULT, ...). А как здесь вставить очередное значение счетчика в единственный автоинкрементируемый столбец?
После выполнения обоих этих операторов получим:
Заметим, что после вставки конкретного значения в автоинкрементируемый столбец (в MySQL это можно сделать обычным оператором вставки), которое будет превышать максимальное имеющееся, приращение счетчика продолжится уже с него. Например:
PostgreSQL
Для вставки очередных значений счетчика мы можем воспользоваться следующими рассмотренными выше приемами:
Однако, если вставить конкретное значение (превышающее максимальное значение, достигнутое счетчиком)
При этом, когда счетчик достигает 5 при генерации очередного значения, получаем ошибку, связанную с нарушением ограничения первичного ключа: ERROR: duplicate key value violates unique constraint "identity_table_pkey" DETAIL: Key (id)=(5) already exists. Если же таблица не имеет ключа на автоинкрементируемом столбце, то мы получим дубликаты, после чего нумерация продолжится дальше. Вот скрипт, который поясняет сказанное:
|