Maison >base de données >tutoriel mysql >Comment créer des colonnes à incrémentation automatique dans Oracle ?
Créer une colonne à incrémentation automatique dans la base de données Oracle
Dans les versions d'Oracle antérieures à 12c, il n'y avait pas de concept de colonnes auto-incrémentées. Cependant, il existe plusieurs moyens d’obtenir des fonctionnalités similaires.
Méthode 1 : Utiliser des séquences et des déclencheurs
Une solution consiste à créer une séquence et un déclencheur qui incrémente la valeur avant d'insérer l'enregistrement.
<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) ); CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END; /</code>
Méthode 2 : Utiliser la colonne IDENTITÉ (Oracle 12c et supérieur)
Oracle 12c introduit le type de données de colonne IDENTITY, qui peut générer automatiquement des valeurs uniques.
<code class="language-sql">CREATE TABLE t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );</code>
Méthode 3 : Utiliser la séquence comme valeur par défaut (Oracle 12c et supérieur)
Une autre approche consiste à utiliser une séquence comme valeur par défaut pour la colonne.
<code class="language-sql">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) );</code>
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!