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
Libérer: 2025-01-23 23:41:08
original
1042 Les gens l'ont consulté

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.

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;
/
Copier après la connexion

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.

CREATE TABLE t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
);
Copier après la connexion

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.

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)
);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal