SQL AUTO INCREMENTПоля


Автоинкремент генерирует уникальное число при вставке новой записи в таблицу.


Поле AUTO INCREMENT

Обычно мы хотим автоматически создавать значение поля первичного ключа при вставке новой записи.

Мы можем создать поле автоинкремента в таблице.


Синтаксис для MySQL

Следующая инструкция SQL определяет столбец "ID" в таблице "Persons" как автоинкрементное поле первичного ключа:

CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

MySQL использует ключевое слово AUTO_INCREMENT для выполнения задачи автоинкремента.

По умолчанию начальное значение AUTO_INCREMENT равно 1, и оно увеличивается на 1 для каждой новой записи.

Чтобы последовательность AUTO_INCREMENT начиналась с другого значения, используйте следующий синтаксис SQL:

ALTER TABLE Persons AUTO_INCREMENT=100

Чтобы вставить новую запись в таблицу "Persons", нам не обязательно указывать значение для столбца "ID" (уникальное значение будет добавлено автоматически):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

Приведённая выше инструкция SQL вставляет новую запись в таблицу "Persons". Столбцу "ID" будет присвоено уникальное значение. Столбец "FirstName" будет установлен в "Lars", а столбец "LastName" — в "Monsen".


Синтаксис для SQL Server

Следующая инструкция SQL определяет столбец "ID" в таблице "Persons" как автоинкрементное поле первичного ключа:

CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS SQL Server использует ключевое слово IDENTITY для выполнения задачи автоинкремента.

В примере выше начальное значение для IDENTITY равно 1, и оно увеличивается на 1 для каждой новой записи.

Совет:Чтобы указать, что столбец "ID" начинается с 10 и увеличивается на 5, измените identity на IDENTITY(10,5).

Чтобы вставить новую запись в таблицу "Persons", нам не обязательно указывать значение для столбца "ID" (уникальное значение будет добавлено автоматически):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

Приведённая выше инструкция SQL вставляет новую запись в таблицу "Persons". Столбцу "ID" будет присвоено уникальное значение. Столбец "FirstName" будет установлен в "Lars", а столбец "LastName" — в "Monsen".


Синтаксис для Access

Следующая инструкция SQL определяет столбец "ID" в таблице "Persons" как автоинкрементное поле первичного ключа:

CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

MS Access использует ключевое слово AUTOINCREMENT для выполнения задачи автоинкремента.

По умолчанию начальное значение AUTOINCREMENT — 1, и оно увеличивается на 1 для каждой новой записи.

Совет:Чтобы указать, что столбец "ID" начинается с 10 и увеличивается на 5, замените autoincrement на AUTOINCREMENT(10,5).

Чтобы вставить новую запись в таблицу "Persons", нам не обязательно указывать значение для столбца "ID" (уникальное значение будет добавлено автоматически):

INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')

Приведённая выше инструкция SQL вставляет новую запись в таблицу "Persons". Столбцу "ID" будет присвоено уникальное значение. Столбец "FirstName" будет установлен в "Lars", а столбец "LastName" — в "Monsen".


Синтаксис для Oracle

В Oracle код немного сложнее.

Вы должны создать поле автоинкремента с помощью объекта последовательности (который генерирует последовательность чисел).

Используйте следующий синтаксис CREATE SEQUENCE:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

Приведённый выше код создаёт объект последовательности с именем seq_person, который начинается с 1 и увеличивается на 1. Этот объект кэширует 10 значений для повышения производительности. Параметр cache указывает, сколько значений последовательности сохраняется для повышения скорости доступа.

Чтобы вставить новую запись в таблицу "Persons", мы должны использовать функцию nextval (которая извлекает следующее значение из последовательности seq_person):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

Приведённая выше инструкция SQL вставляет новую запись в таблицу "Persons". Столбцу "ID" будет присвоено следующее число из последовательности seq_person. Столбец "FirstName" будет установлен в "Lars", а столбец "LastName" — в "Monsen".


Другие расширения