Incrémentation automatique des colonnes existantes dans les bases de données Oracle
L'ajout d'une fonctionnalité d'incrémentation automatique à une colonne existante dans Oracle peut être réalisé par différentes approches selon sur la version Oracle.
Oracle 12c et supérieur : utilisation de l'identité Colonnes
Oracle 12c a introduit la fonctionnalité de colonne IDENTITY qui simplifie l'incrémentation automatique :
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
Oracle 11g et versions antérieures : séquence et déclencheur
Pour les versions Oracle antérieures à 12c, vous pouvez utiliser une combinaison de séquence et déclencheur :
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
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;
Ce déclencheur remplit automatiquement la colonne ID avec les valeurs de la séquence.
Exemple d'utilisation :
Pour les deux méthodes, les insertions rempliront la colonne ID avec des valeurs auto-incrémentées à partir de 150111111.
INSERT INTO t(text) VALUES('auto-increment test');
L'interrogation de la table confirme les ID auto-incrémentés :
SELECT * FROM t; ID TEXT ------------------------- ---------------------------------------- 150111111 This table has an auto-incrementing column
Remarque : Oracle crée implicitement une séquence nommée ISEQ$$ lors de l'utilisation de l'identité colonnes.
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!