Maison >base de données >tutoriel mysql >Comment ajouter une fonctionnalité d'incrémentation automatique aux colonnes de table Oracle existantes ?

Comment ajouter une fonctionnalité d'incrémentation automatique aux colonnes de table Oracle existantes ?

DDD
DDDoriginal
2024-12-19 02:52:091066parcourir

How to Add Auto-Incrementing Functionality to Existing Oracle Table Columns?

Incrémentation automatique des colonnes de table Oracle existantes

Dans Oracle, il est possible d'ajouter une fonctionnalité d'incrémentation automatique à une colonne existante avec une clé primaire de différentes manières selon la version d'Oracle.

Oracle 11g et Avant

Créez une séquence qui incrémentera les valeurs de la colonne :

CREATE SEQUENCE t_seq
START WITH 150111111
INCREMENT BY 1;

Utilisez un déclencheur pour attribuer la valeur de séquence suivante à la colonne lors des insertions :

CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
    SELECT t_seq.NEXTVAL
    INTO   :new.id
    FROM   dual;
END;

Oracle 12c et versions ultérieures

Oracle 12c a introduit l'identité colonne, qui permet d'auto-incrémenter les valeurs sans avoir besoin de séquences ou de déclencheurs :

CREATE TABLE t
(
    ID NUMBER GENERATED ALWAYS AS IDENTITY
    START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
);

Une fois la colonne en place, les nouvelles lignes seront auto-incrémentées à partir de la valeur de départ spécifiée.

Exemple d'utilisation d'Oracle 11g

Étant donné le table :

TABLE t (
 SEQ_ID NUMBER(10) NOT NULL
);

Après avoir créé la séquence "t_seq" et le déclencheur "t_trg", insérez de nouvelles lignes :

INSERT INTO t(text) VALUES('auto-increment test 1');
INSERT INTO t(text) VALUES('auto-increment test 2');

Interrogez la table pour vérifier l'auto-incrémentation :

SELECT * FROM t;

Exemple d'utilisation d'Oracle 12c

Avec la table définie comme :

CREATE TABLE t
(
    ID NUMBER GENERATED ALWAYS AS IDENTITY
    START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
);

Insérer de nouvelles lignes :

INSERT INTO t(text) VALUES('This table has an identity column');

Interroger la table pour confirmation :

SELECT * FROM t;

Dans les deux versions d'Oracle, la colonne " ID" sera désormais auto-incrémenté à partir de la valeur de départ spécifiée (150111111) avec un pas de 1.

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