Champ SQL AUTO INCREMENT
Champ AUTO INCREMENT
L'auto-incrémentation permet de générer automatiquement un numéro unique lorsqu'un nouvel enregistrement est inséré dans une table.
Il s'agit souvent du champ de clé primaire que nous aimerions voir créé automatiquement chaque fois qu'un nouvel enregistrement est inséré.
Syntaxe pour MySQL
L'instruction SQL suivante définit la colonne "Personid" comme étant un champ de clé primaire à incrémentation automatique dans la table "Persons" :
CREATE TABLE Persons
(
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (Personid)
);
MySQL utilise le mot- AUTO_INCREMENT
clé pour effectuer une fonction d'auto-incrémentation.
Par défaut, la valeur de départ pour AUTO_INCREMENT
est 1, et elle sera incrémentée de 1 pour chaque nouvel enregistrement.
Pour que la AUTO_INCREMENT
séquence commence par une autre valeur, utilisez l'instruction SQL suivante :
ALTER TABLE Persons AUTO_INCREMENT=100;
Pour insérer un nouvel enregistrement dans la table "Persons", nous n'aurons PAS besoin de spécifier une valeur pour la colonne "Personid" (une valeur unique sera ajoutée automatiquement) :
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
L'instruction SQL ci-dessus insérerait un nouvel enregistrement dans la table "Persons". La colonne "Personid" se verrait attribuer une valeur unique. La colonne "FirstName" serait définie sur "Lars" et la colonne "LastName" serait définie sur "Monsen".
Syntaxe pour SQL Server
L'instruction SQL suivante définit la colonne "Personid" comme étant un champ de clé primaire à incrémentation automatique dans la table "Persons" :
CREATE TABLE Persons
(
Personid int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Le serveur MS SQL utilise le mot- IDENTITY
clé pour effectuer une fonction d'auto-incrémentation.
Dans l'exemple ci-dessus, la valeur de départ pour
IDENTITY
est 1, et elle sera incrémentée de 1 pour chaque nouvel enregistrement.
Conseil : Pour spécifier que la colonne "Personid" doit commencer à la valeur 10 et s'incrémenter de 5, remplacez-la par IDENTITY(10,5)
.
Pour insérer un nouvel enregistrement dans la table "Persons", nous n'aurons PAS besoin de spécifier une valeur pour la colonne "Personid" (une valeur unique sera ajoutée automatiquement) :
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
L'instruction SQL ci-dessus insérerait un nouvel enregistrement dans la table "Persons". La colonne "Personid" se verrait attribuer une valeur unique. La colonne "FirstName" serait définie sur "Lars" et la colonne "LastName" serait définie sur "Monsen".
Syntaxe pour l'accès
L'instruction SQL suivante définit la colonne "Personid" comme étant un champ de clé primaire à incrémentation automatique dans la table "Persons" :
CREATE TABLE Persons
(
Personid AUTOINCREMENT PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Le MS Access utilise le mot- AUTOINCREMENT
clé pour effectuer une fonction d'auto-incrémentation.
Par défaut, la valeur de départ pour AUTOINCREMENT
est 1, et elle sera incrémentée de 1 pour chaque nouvel enregistrement.
Astuce : Pour spécifier que la colonne "Personid" doit commencer à la valeur 10 et s'incrémenter de 5, changez l'auto-incrémentation en
AUTOINCREMENT(10,5)
.
Pour insérer un nouvel enregistrement dans la table "Persons", nous n'aurons PAS besoin de spécifier une valeur pour la colonne "Personid" (une valeur unique sera ajoutée automatiquement) :
INSERT INTO Persons (FirstName,LastName)
VALUES ('Lars','Monsen');
L'instruction SQL ci-dessus insérerait un nouvel enregistrement dans la table "Persons". La colonne "Personid" se verrait attribuer une valeur unique. La colonne "FirstName" serait définie sur "Lars" et la colonne "LastName" serait définie sur "Monsen".
Syntaxe pour Oracle
Dans Oracle, le code est un peu plus compliqué.
Vous devrez créer un champ auto-incrémenté avec l'objet séquence (cet objet génère une séquence de nombres).
Utilisez la CREATE SEQUENCE
syntaxe 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 s'incrémentera de 1. Il mettra également en cache jusqu'à 10 valeurs pour les performances. L'option de cache spécifie le nombre de valeurs de séquence qui seront stockées en mémoire pour un accès plus rapide.
Pour insérer un nouvel enregistrement dans la table "Persons", nous devrons utiliser la fonction nextval (cette fonction récupère la valeur suivante de la séquence seq_person) :
INSERT INTO Persons (Personid,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen');
L'instruction SQL ci-dessus insère un nouvel enregistrement dans la table "Persons". La colonne "Personid" se verrait attribuer le numéro suivant de la séquence seq_person. La colonne "FirstName" serait définie sur "Lars" et la colonne "LastName" serait définie sur "Monsen".