Auto-incrémentation permet un numéro unique à être généré lorsqu'un nouvel enregistrement est inséré dans une table.
AUTO INCREMENT un champ
Très souvent, nous voudrions que la valeur du champ de clé primaire doit être créé automatiquement à chaque fois qu'un nouvel enregistrement est inséré.
Nous aimerions créer un champ à incrémentation automatique dans une table.
Syntaxe pour MySQL
L'instruction SQL suivante définit le "ID" colonne pour être un champ de clé primaire auto-incrémentation dans le "Persons" tableau:
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 utilise le mot-clé AUTO_INCREMENT pour effectuer une fonction d'auto-incrémentation.
Par défaut, la valeur de départ de AUTO_INCREMENT est 1, et il sera incrémenté de 1 pour chaque nouvel enregistrement.
Pour que la séquence AUTO_INCREMENT démarrer avec une autre valeur, utilisez l'instruction SQL suivante:
ALTER TABLE Persons AUTO_INCREMENT=100
Pour insérer un nouvel enregistrement dans le "Persons" table, nous ne devrons pas de spécifier une valeur pour le "ID" colonne (une valeur unique sera automatiquement ajouté):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
L'instruction SQL serait - dessus insérer un nouvel enregistrement dans le "Persons" table. Le "ID" colonne serait attribué une valeur unique. Le "FirstName" colonne serait réglé sur "Lars" et "LastName" colonne serait réglé sur "Monsen" .
Syntaxe pour SQL Server
L'instruction SQL suivante définit le "ID" colonne pour être un champ de clé primaire auto-incrémentation dans le "Persons" tableau:
CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Le MS SQL Server utilise le mot-clé IDENTITY pour effectuer une fonction d'auto-incrémentation.
Dans l'exemple ci-dessus, la valeur de départ pour IDENTITY est 1, et il sera incrémenté de 1 pour chaque nouvel enregistrement.
Astuce: Pour spécifier que le "ID" colonne doit commencer à la valeur 10 et l' incrément de 5, changer pour IDENTITÉ (10,5).
Pour insérer un nouvel enregistrement dans le "Persons" table, nous ne devrons pas de spécifier une valeur pour le "ID" colonne (une valeur unique sera automatiquement ajouté):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
L'instruction SQL serait - dessus insérer un nouvel enregistrement dans le "Persons" table. Le "ID" colonne serait attribué une valeur unique. Le "FirstName" colonne serait réglé sur "Lars" et "LastName" colonne serait réglé sur "Monsen" .
Syntaxe pour l'accès
L'instruction SQL suivante définit le "ID" colonne pour être un champ de clé primaire auto-incrémentation dans le "Persons" tableau:
CREATE TABLE Persons
(
ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Le MS Access utilise le mot-clé AUTOINCREMENT pour effectuer une fonction d'auto-incrémentation.
Par défaut, la valeur de départ de AUTOINCREMENT est 1, et il sera incrémenté de 1 pour chaque nouvel enregistrement.
Astuce: Pour spécifier que le "ID" colonne doit commencer à la valeur 10 et l' incrément de 5, changer le autoincrement à AUTOINCREMENT (10,5).
Pour insérer un nouvel enregistrement dans le "Persons" table, nous ne devrons pas de spécifier une valeur pour le "ID" colonne (une valeur unique sera automatiquement ajouté):
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen')
L'instruction SQL serait - dessus insérer un nouvel enregistrement dans le "Persons" table. Le "P_Id" colonne serait attribué une valeur unique. Le "FirstName" colonne serait réglé sur "Lars" et "LastName" colonne serait réglé sur "Monsen" .
Syntaxe pour Oracle
Dans Oracle le code est un peu plus délicat.
Vous devrez créer un champ incrémentation automatique avec l'objet de séquence (cet objet génère une séquence de nombres).
Utilisez la syntaxe CREATE SEQUENCE suivante:
CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10
Le code ci-dessus crée un objet de séquence appelé seq_person, qui commence par 1 et incrémente de 1. Il sera également en cache jusqu'à 10 valeurs pour la performance. L'option de cache indique le nombre de valeurs de séquence seront stockées dans la mémoire pour un accès plus rapide.
Pour insérer un nouvel enregistrement dans le "Persons" table, nous devrons utiliser la fonction nextval (cette fonction récupère la valeur suivante de la séquence d'seq_person):
INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')
L'instruction SQL serait - dessus insérer un nouvel enregistrement dans le "Persons" table. Le "ID" colonne serait attribué le numéro suivant de la séquence seq_person. Le "FirstName" colonne serait réglé sur "Lars" et "LastName" colonne serait réglé sur "Monsen" .