SQL AUTO INCREMENT
Первичный ключ AUTO INCREMENT
AUTO INCREMENT позволяет автоматически генерировать уникальное число при вставке новой записи в таблицу.
Часто поле первичного ключа, которое мы хотели бы создавать автоматически при каждой вставке новой записи.
Синтаксис для MySQL
Следующая инструкция SQL определяет, что столбец "Personid", который должен быть полем первичного ключа с автоматическим приращением в поле первичного ключа в таблице "Persons":
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL использует ключевое слово AUTO_INCREMENT для выполнения функции автоматического приращения.
По умолчанию начальное значение для AUTO_INCREMENT равно 1, и оно будет увеличиваться на 1 для каждой новой записи.
Чтобы последовательность AUTO_INCREMENT начиналась с другого значения, используйте следующую инструкцию SQL:
ALTER TABLE Persons AUTO_INCREMENT=100;
Чтобы вставить новую запись в таблицу "Persons", нам не нужно будет указывать значение для столбца "Personid" (уникальное значение будет добавлено автоматически):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Приведенная выше инструкция SQL вставит новую запись в таблицу "Persons". Столбцу "Personid" будет присваивается уникальное значение. Столбец "FirstName" будет иметь значение "Lars", а столбец "LastName"- "Monsen".
Синтаксис для SQL Server
Следующая инструкция SQL определяет столбец "Personid" как поле первичного ключа автоинкремента в таблице "Persons":
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS SQL Server использует ключевое слово IDENTITY для выполнения функции автоматического приращения.
В приведенном выше примере начальное значение идентификатора равно 1, и оно будет увеличиваться на 1 для каждой новой записи.
Совет: Чтобы указать, что столбец "Personid" должен начинаться со значения 10 и увеличиваться на 5, измените его на IDENTITY(10,5).
Чтобы вставить новую запись в таблицу "Persons", нам не нужно будет указывать значение для столбца "Personid" (уникальное значение будет добавлено автоматически):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Приведенная выше инструкция SQL вставит новую запись в таблицу" Persons". Столбцу "Personid" будет присвоено уникальное значение. Столбец "FirstName" будет иметь значение "Lars", а столбец "LastName"- "Monsen".
Синтаксис для Access
Следующая инструкция SQL определяет столбец "Personid" как поле первичного ключа автоинкремента в таблице "Persons":
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
MS Access использует ключевое слово AUTOINCREMENT для выполнения функции автоматического приращения.
По умолчанию начальное значение для AUTOINCREMENT равно 1, и оно будет увеличиваться на 1 для каждой новой записи.
Совет: Чтобы указать, что столбец "Personid" должен начинаться со значения 10 и увеличиваться на 5, измените значение autoincrement на AUTOINCREMENT(10,5).
Чтобы вставить новую запись в таблицу "Persons", нам не нужно будет указывать значение для столбца "Personid" (уникальное значение будет добавлено автоматически):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Приведенная выше инструкция SQL вставит новую запись в таблицу "Persons". Столбцу "Personid" будет присвоено уникальное значение. Столбец "FirstName" будет иметь значение "Lars", а столбец "LastName" - "Monsen".
Синтаксис для Oracle
В Oracle код немного сложнее.
Вам нужно будет создать поле автоинкремента с объектом SEQUENCE (этот объект генерирует числовую последовательность).
Используйте следующий синтаксис 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 (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
Приведенная выше инструкция SQL вставит новую запись в таблицу "Persons". Столбецу "Personid" будет присвоен следующий номер из последовательности "seq_person". Столбец "FirstName" будет иметь значение "Lars", а столбец "LastName"- "Monsen".