SQL 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
The following SQL statement defines the "Personid" column to be an auto-increment primary key field in the "Persons" table:
CREATE TABLE Persons (
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
The MS SQL Server uses the IDENTITY
keyword to perform an auto-increment feature.
In the example above, the starting value for IDENTITY
is 1, and it will increment by 1 for each new record.
Tip: To specify that the "Personid" column should start at value 10 and increment by 5, change it to IDENTITY(10,5)
.
To insert a new record into the "Persons" table, we will NOT have to specify a value for the "Personid" column (a unique value will be added automatically):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
The SQL statement above would insert a new record into the "Persons" table. The "Personid" column would be assigned a unique value. The "FirstName" column would be set to "Lars" and the "LastName" column would be set to "Monsen".
Syntax for Access
The following SQL statement defines the "Personid" column to be an auto-increment primary key field in the "Persons" table:
CREATE TABLE Persons (
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
The MS Access uses the AUTOINCREMENT
keyword to perform an auto-increment feature.
By default, the starting value for AUTOINCREMENT
is 1, and it will increment by 1 for each new record.
Tip: To specify that the "Personid" column should start at value 10 and increment by 5, change the autoincrement to AUTOINCREMENT(10,5)
.
To insert a new record into the "Persons" table, we will NOT have to specify a value for the "Personid" column (a unique value will be added automatically):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
The SQL statement above would insert a new record into the "Persons" table. The "Personid" column would be assigned a unique value. The "FirstName" column would be set to "Lars" and the "LastName" column would be set to "Monsen".
Syntax for Oracle
In Oracle the code is a little bit more tricky.
You will have to create an auto-increment field with the sequence object (this object generates a number sequence).
Use the following CREATE SEQUENCE
syntax:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;
The code above creates a sequence object called seq_person, that starts with 1 and will increment by 1. It will also cache up to 10 values for performance. The cache option specifies how many sequence values will be stored in memory for faster access.
To insert a new record into the "Persons" table, we will have to use the nextval function (this function retrieves the next value from a seq_person sequence):
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
The SQL a statement above would insert a new record into the "Persons" table. The "Personid" column would be assigned the next number from the seq_person sequence. The "FirstName" column would be set to "Lars" and the "LastName" column would be set to "Monsen".