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

Comment puis-je ajouter une fonctionnalité d'incrémentation automatique aux colonnes Oracle existantes ?

Susan Sarandon
Libérer: 2024-12-19 13:39:10
original
496 Les gens l'ont consulté

How Can I Add Auto-Increment Functionality to Existing Oracle Columns?

Incrémentation automatique pour les colonnes Oracle préexistantes

Bien que l'ajout d'une fonctionnalité d'incrémentation automatique à une colonne existante ne soit pas pris en charge de manière native dans Oracle, diverses approches peuvent être utilisées pour y parvenir.

11g et Prior : Séquence et Déclencheur

Pour les versions Oracle 11g et antérieures, une séquence et un déclencheur peuvent être utilisés :

  • Créer une séquence : Cette séquence générera le valeurs auto-incrémentées.
  • Modifiez le tableau : Ajoutez une contrainte de clé primaire au colonne.
  • Créer un déclencheur : Le déclencheur insérera la valeur suivante de la séquence dans la colonne chaque fois qu'une nouvelle ligne est insérée (si la colonne est nulle).

Exemple :

-- Create sequence
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;

-- Alter table
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);

-- Create trigger
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

12c et versions ultérieures : identité Colonne

Oracle 12c a introduit la fonctionnalité de colonne d'identité, qui permet l'auto-incrémentation dans la table elle-même :

  • Créer une table avec une colonne d'identité : Spécifiez l'attribut GÉNÉRÉ ALWAYS AS IDENTITY pour le colonne.
  • Exemple :

    CREATE TABLE t (
    ID NUMBER GENERATED ALWAYS AS IDENTITY
          START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
    );
    Copier après la connexion

Veuillez noter que ces approches ne mettent pas à jour les valeurs existantes dans la colonne. Pour modifier les valeurs existantes, une requête de mise à jour distincte serait nécessaire.

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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal