Maison >base de données >tutoriel mysql >Comment ajouter une incrémentation automatique à une colonne de clé primaire existante dans Oracle ?

Comment ajouter une incrémentation automatique à une colonne de clé primaire existante dans Oracle ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-03 05:35:391029parcourir

How to Add Auto-Increment to an Existing Primary Key Column in Oracle?

Ajout d'une incrémentation automatique à une colonne existante dans Oracle

Dans Oracle, pour ajouter une fonctionnalité d'incrémentation automatique à une colonne existante qui est déjà la clé primaire d'une table, vous pouvez utiliser différentes méthodes selon la version d'Oracle que vous utilisez.

Pour Oracle 11g et Prior

  • Créez une séquence pour incrémenter la colonne via un déclencheur.
CREATE SEQUENCE t_seq
  START WITH 150111111
  INCREMENT BY 1;

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;

Pour Oracle 12c et versions ultérieures

  • Utilisez la colonne Identité fonctionnalité.
CREATE TABLE t
  (
    ID NUMBER GENERATED ALWAYS AS IDENTITY
    START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
  );

Insertion de données

Une fois la fonctionnalité d'incrémentation automatique configurée, vous pouvez insérer des données dans le tableau comme d'habitude.

Exemple

Considérons une table nommée t avec une colonne nommée ID comme la clé primaire et vous souhaitez la configurer pour l'incrémentation automatique à partir de 150111111.

Utilisation de la méthode séquence dans Oracle 11g :

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

Utilisation de la méthode de colonne Identité dans Oracle 12c :

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

Remarque :

  • La séquence créée pour l'auto-incrémentation de la clé primaire est nommée ISEQ$$, qui peut être vérifiée à l'aide du Vue USER_SEQUENCES.
  • La vue ALL_TAB_IDENTITY_COLS fournit des informations sur les colonnes d'identité dans le base de données.

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