Maison >base de données >tutoriel mysql >Comment créer des colonnes à incrémentation automatique dans Oracle 11g et versions ultérieures ?
Création de colonnes de type AUTO_INCREMENT dans Oracle 11g
Dans les versions Oracle jusqu'à 11g, le type de colonne AUTO_INCREMENT n'est pas disponible nativement. Cependant, il existe des mécanismes alternatifs pour obtenir des fonctionnalités similaires.
Utilisation de séquences et de déclencheurs
L'approche la plus courante dans Oracle 11g consiste à utiliser une combinaison d'une séquence et d'un déclencheur :
Tableau Définition :
CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) ); CREATE SEQUENCE dept_seq START WITH 1;
Définition du déclencheur :
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END; /
Ce déclencheur attribue une valeur incrémentielle unique aux lignes nouvellement insérées, imitant le comportement de colonnes à incrémentation automatique.
Colonnes IDENTITY (Oracle 12c )
Dans Oracle 12c et versions ultérieures, le type de colonne IDENTITY a été introduit, offrant une véritable fonctionnalité d'incrémentation automatique :
Définition de table :
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
Cette définition crée une colonne 'c1' qui s'incrémente automatiquement à chaque nouvelle ligne insérée dans le table.
Vous pouvez également spécifier des valeurs de départ et d'incrément :
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
Utiliser des séquences comme valeurs par défaut (Oracle 12)
Une autre option dans Oracle 12 et versions ultérieures consiste à utiliser une séquence comme valeur par défaut pour un column :
CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) DEFAULT dept_seq.nextval NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) );
Cette approche attribue des valeurs incrémentielles à l'aide d'une séquence, mais l'opération d'incrémentation réelle est gérée par la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!