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