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 ?

DDD
Libérer: 2025-01-23 23:21:53
original
536 Les gens l'ont consulté

How Do I Create Auto-Incrementing Columns in Oracle Databases?

Colonne à incrémentation automatique dans la base de données Oracle

Dans Oracle Database, contrairement à d'autres systèmes de bases de données, il n'existait aucun concept d'incrémentation automatique des colonnes jusqu'à la version 11g. Cela peut créer des défis lors de la création de tables nécessitant des identifiants à incrémentation automatique. Heureusement, vous pouvez utiliser des séquences et des déclencheurs pour simuler ce comportement.

Simulation utilisant des séquences et des déclencheurs

Dans Oracle 11g et versions antérieures, vous pouvez créer des séquences et des déclencheurs pour simuler des colonnes à incrémentation automatique. Tout d'abord, définissez un tableau contenant une colonne numérique utilisée comme identifiant :

<code class="language-sql">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;</code>
Copier après la connexion

Ensuite, créez un déclencheur qui remplit la colonne ID avec la valeur suivante de la séquence lorsqu'un nouvel enregistrement est inséré :

<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

Colonne Identité (Oracle 12c et versions ultérieures)

À partir d'Oracle 12c, les colonnes d'identité ont été introduites comme une véritable fonctionnalité d'incrémentation automatique. Vous pouvez définir une colonne d'identité dans un tableau comme suit :

<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

Les colonnes d'identité peuvent également spécifier des valeurs de départ et incrémentielles pour empêcher les mises à jour manuelles :

<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

Utiliser des séquences comme alternative aux valeurs par défaut

Oracle 12 propose également un moyen d'utiliser des séquences comme valeurs 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

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