Столбцы идентификации (автоинкремент)
Столбец идентификации представляет собой столбец, связанный с внутренним генератором последовательностей.Столбцы идентификации могут быть определены либо с помощью предложения GENERATED BY DEFAULT AS IDENTITY, либо предложения GENERATED ALWAYS AS IDENTITY.
Если столбец идентификации задан как GENERATED BY DEFAULT, то его значение будет увеличиваться и использовано как значение по умолчанию при каждой вставке, только в том случае, если значение этого столбца не задано явно.
Чтобы использовать сгенерированное по умолчанию значение, необходимо либо указать ключевое слово DEFAULT при вставке в столбец идентификации, или просто не упоминать столбец идентификации в списке столбцов для вставки.В противном случае будет использовано указанное вами значение.
GENERATED BY DEFAULT AS IDENTITYCREATE 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
|
|