- MySQL utilise la clause
AUTO_INCREMENT
lors de la définition de la colonne
CREATE TABLE etudiant (
etud_id INT AUTO_INCREMENT PRIMARY KEY,
etud_nom VARCHAR(50) NOT NULL,
etud_prenom VARCHAR(35) NOT NULL);
- Depuis la version 4.1, MySQL a un introduit le type
SERIAL
en tant qu'alias pour BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
- En cas d'usage de
SERIAL
associé à une clé primaire, il faut utiliser le type BIGINT UNSIGNED
pour typer les clés étrangères pointant dessus.
- PostgreSQL (2 possibilités) :
- via la clause
DEFAULT
et de la fonction nextval()
- via le type de colonne
SERIAL
: génère une séquence dont le nom est de la forme nomTable_nomColonne_seq
, automatise l'attribution d'une nouvelle clé
CREATE TABLE etudiant (
etud_id SERIAL PRIMARY KEY,
-- équivalent à :
-- etud_id int DEFAULT nextval('etudiant_etud_id_seq')
etud_nom VARCHAR(50) NOT NULL,
etud_prenom VARCHAR(35) NOT NULL);
--NOTICE: CREATE TABLE will create implicit sequence "etudiant_etud_id_seq" for serial column "etudiant.etud_id"
--NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "etudiant_pkey" for table "etudiant"
- Oracle 11g: obligation de passer par un trigger... (version disponible sur ust-infoserv)
- Oracle 12c : accepte la pseudo-colonne nextval d'une séquence en valeur par défaut
CREATE SEQUENCE seq_etudiant;
CREATE TABLE etudiant (
etud_id INTEGER DEFAULT seq_etudiant.nextval PRIMARY KEY,
etud_nom VARCHAR(50) NOT NULL,
etud_prenom VARCHAR(35) NOT NULL);