Столбцы идентификации (автоинкремент)
Столбец идентификации представляет собой столбец, связанный с внутренним генератором последовательностей.Столбцы идентификации могут быть определены либо с помощью предложения GENERATED BY DEFAULT AS IDENTITY
, либо предложения GENERATED ALWAYS AS IDENTITY
.
Если столбец идентификации задан как GENERATED BY DEFAULT
, то его значение будет увеличиваться и использовано как значение по умолчанию при каждой вставке, только в том случае, если значение этого столбца не задано явно.
Чтобы использовать сгенерированное по умолчанию значение, необходимо либо указать ключевое слово DEFAULT
при вставке в столбец идентификации, или просто не упоминать столбец идентификации в списке столбцов для вставки.В противном случае будет использовано указанное вами значение.
GENERATED BY DEFAULT AS IDENTITY
CREATE TABLE greetings (
id INT GENERATED BY DEFAULT AS IDENTITY,
name CHAR(50));
-- specify value "1":
INSERT INTO greetings VALUES (1, 'hi');
-- use generated default
INSERT INTO greetings VALUES (DEFAULT, 'salut');
-- use generated default
INSERT INTO greetings(ch) VALUES ('bonjour');
Note
|
Это поведение может быть изменено в операторе INSERT если указана директива |
Если столбец идентификации задан как GENERATED ALWAYS
, то его значение будет увеличиваться при каждой вставке.При попытке явно присвоить значение столбца идентификации в операторе INSERT
, будет выдано сообщение об ошибке.В операторе INSERT
вы можете указать ключевое слово DEFAULT
вместо значения для столбца идентификации.
create table greetings (
id INT GENERATED ALWAYS AS IDENTITY,
name CHAR(50));
INSERT INTO greetings VALUES (DEFAULT, 'hello');
INSERT INTO greetings(ch) VALUES ('bonjour');
Note
|
Это поведение может быть изменено в операторе |
Необязательное предложение START WITH
позволяет указать начальное значение отличное от нуля.Предложение INCREMENT [BY]
устанавливает значение приращения.Значение приращения должно быть отлично от 0.По умолчанию значение приращения равно 1.
-
Тип данных столбца идентификации должен быть целым числом с нулевым масштабом. Допустимыми типами являются
SMALLINT
,INTEGER
,BIGINT
,NUMERIC(x,0)
иDECIMAL(x,0)
; -
Идентификационный столбец не может иметь
DEFAULT
иCOMPUTED
значений.
Note
|
|