Поле SQL 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;
Чтобы вставить новую запись в таблицу «Лица», нам НЕ нужно будет указывать значение для столбца «Персонал» (уникальное значение будет добавлено автоматически):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Приведенный выше оператор SQL вставит новую запись в таблицу «Люди». Столбцу «Personid» будет присвоено уникальное значение. В столбце «Имя» будет указано «Ларс», а в столбце «Фамилия» будет указано «Монсен».
Синтаксис для 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 использует IDENTITY
ключевое слово для выполнения функции автоматического увеличения.
В приведенном выше примере начальное значение
IDENTITY
равно 1, и оно будет увеличиваться на 1 для каждой новой записи.
Совет: Чтобы указать, что столбец «Идентификатор личности» должен начинаться со значения 10 и увеличиваться на 5, измените его на IDENTITY(10,5)
.
Чтобы вставить новую запись в таблицу «Лица», нам НЕ нужно будет указывать значение для столбца «Персонал» (уникальное значение будет добавлено автоматически):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Приведенный выше оператор SQL вставит новую запись в таблицу «Люди». Столбцу «Personid» будет присвоено уникальное значение. В столбце «Имя» будет указано «Ларс», а в столбце «Фамилия» будет указано «Монсен».
Синтаксис доступа
Следующая инструкция 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(10,5)
.
Чтобы вставить новую запись в таблицу «Лица», нам НЕ нужно будет указывать значение для столбца «Персонал» (уникальное значение будет добавлено автоматически):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
Приведенный выше оператор SQL вставит новую запись в таблицу «Люди». Столбцу «Personid» будет присвоено уникальное значение. В столбце «Имя» будет указано «Ларс», а в столбце «Фамилия» будет указано «Монсен».
Синтаксис для Oracle
В Oracle код немного сложнее.
Вам нужно будет создать поле автоинкремента с объектом последовательности (этот объект генерирует числовую последовательность).
Используйте следующий CREATE SEQUENCE
синтаксис:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
Приведенный выше код создает объект последовательности с именем seq_person, который начинается с 1 и увеличивается на 1. Он также кэширует до 10 значений для повышения производительности. Параметр кэша указывает, сколько значений последовательности будет храниться в памяти для более быстрого доступа.
Чтобы вставить новую запись в таблицу «Люди», нам придется использовать функцию nextval (эта функция извлекает следующее значение из последовательности seq_person):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
Приведенный выше оператор SQL вставит новую запись в таблицу «Люди». Столбцу «Personid» будет присвоен следующий номер из последовательности seq_person. В столбце «Имя» будет указано «Ларс», а в столбце «Фамилия» будет указано «Монсен».