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!