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
Libérer: 2024-12-19 02:52:09
original
970 Les gens l'ont consulté

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

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

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

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

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

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

SELECT * FROM t;
Copier après la connexion
Copier après la connexion

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

Insérer de nouvelles lignes :

INSERT INTO t(text) VALUES('This table has an identity column');
Copier après la connexion

Interroger la table pour confirmation :

SELECT * FROM t;
Copier après la connexion
Copier après la connexion

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!

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