Maison >base de données >tutoriel mysql >Comment créer des colonnes à incrémentation automatique dans Oracle ?

Comment créer des colonnes à incrémentation automatique dans Oracle ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-23 23:41:081018parcourir

How to Create Auto-Increment Columns in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn