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

Comment créer des colonnes à incrémentation automatique dans les bases de données Oracle ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-23 23:37:09950parcourir

How to Create Auto-Increment Columns in Oracle Databases?

Colonnes à incrémentation automatique dans Oracle : un guide complet

Les bases de données Oracle, antérieures à la version 12c, n'offraient pas de colonnes natives à incrémentation automatique. Cependant, vous pouvez répliquer efficacement cette fonctionnalité à l'aide de séquences et de déclencheurs. Oracle 12c et les versions ultérieures introduisent de véritables colonnes d'identité, offrant une approche plus rationalisée.

Pré-12c : simulation d'incrémentation automatique avec des séquences et des déclencheurs

Commençons par créer une table nécessitant un ID à incrémentation automatique :

<code class="language-sql">CREATE TABLE departments (
  ID NUMBER(10) NOT NULL,
  DESCRIPTION VARCHAR2(50) NOT NULL
);</code>

Ensuite, créez une séquence pour générer des valeurs d'identification uniques :

<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;</code>

Enfin, un déclencheur garantit que la valeur de séquence est automatiquement attribuée à la colonne ID lors de l'insertion :

<code class="language-sql">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>

Oracle 12c et au-delà : colonnes d'identité

Oracle 12c a introduit des colonnes d'identité natives, simplifiant considérablement le processus :

<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
  c2 VARCHAR2(10)
);</code>

Options avancées dans Oracle 12c

Oracle 12c offre une personnalisation plus poussée :

  • Contrôle des valeurs de départ et d'incrémentation : Empêchez l'insertion manuelle dans la colonne d'identité en spécifiant les valeurs de départ et d'incrémentation :
<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
  c2 VARCHAR2(10)
);</code>
  • Utilisation de séquences avec des colonnes d'identité : Vous pouvez toujours exploiter les séquences comme source de valeur par défaut :
<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
);</code>

Ces méthodes fournissent des solutions efficaces et flexibles pour gérer les colonnes à auto-incrémentation dans les bases de données Oracle, quelle que soit la version.

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