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
Libérer: 2025-01-23 23:37:09
original
949 Les gens l'ont consulté

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

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

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

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

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

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!

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