Maison > base de données > tutoriel mysql > Comment créer des colonnes à incrémentation automatique dans Oracle : 11g contre 12c et au-delà ?

Comment créer des colonnes à incrémentation automatique dans Oracle : 11g contre 12c et au-delà ?

Patricia Arquette
Libérer: 2025-01-23 23:27:20
original
218 Les gens l'ont consulté

How to Create Auto-Incrementing Columns in Oracle: 11g vs. 12c and Beyond?

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

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

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

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

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)
);
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!

source:php.cn
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