Maison >base de données >tutoriel mysql >Comment créer des colonnes à incrémentation automatique dans Oracle : 11g contre 12c et au-delà ?
Création de colonnes à incrémentation automatique dans Oracle 11g et au-delà
Les bases de données Oracle n'ont pas le concept de colonnes à incrémentation automatique jusqu'à la version 12c. Malgré cela, il est possible d'émuler ce comportement dans Oracle 11g à l'aide d'une séquence et d'un déclencheur.
Méthode pour Oracle 11g
Commencez par définir la table avec une clé primaire column :
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;
Ensuite, créez un déclencheur qui génère des valeurs d'ID uniques pour les nouveaux insertions :
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END;
Mise à jour pour Oracle 12c et versions ultérieures
Oracle 12c introduit un type de colonne IDENTITY natif, offrant une véritable fonctionnalité d'incrémentation automatique :
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
Vous pouvez également spécifier un démarrage et un incrément personnalisés valeurs :
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
Ou, dans Oracle 12c et versions ultérieures, utilisez une séquence comme valeur par défaut :
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) );
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!