Maison >base de données >tutoriel mysql >Comment puis-je incrémenter automatiquement une colonne de clé primaire Oracle existante ?

Comment puis-je incrémenter automatiquement une colonne de clé primaire Oracle existante ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-27 00:28:17144parcourir

How Can I Make an Existing Oracle Primary Key Column Auto-Increment?

Transformation par incrémentation automatique pour les colonnes de table Oracle existantes

Problème :

Comment une colonne existante, déjà désignée comme la clé primaire, être configurée pour s'auto-incrémenter dans une base de données Oracle ? La colonne a été créée avec le type de données VARCHAR2(9 BYTE).

Solution :

Oracle 11g et Prior (Pre-12c) : Séquence et Déclencheur

  1. Créer une séquence :Établir une séquence, comme t_seq, avec la valeur de départ de 150111111 et des pas incrémentiels de 1.
  2. Implémenter un déclencheur : Développer un déclencheur BEFORE INSERT qui remplit la colonne avec la valeur suivante de la séquence lorsque la valeur de la colonne est NULL.

Oracle 12c et Plus tard : Colonne d'identité

  1. Utiliser la colonne d'identité : Définissez une COLONNE D'IDENTITÉ dans l'instruction de création de table, en commençant par 150111111 et en incrémentant de 1.

Exemple :

CREATE TABLE t (
    ID NUMBER GENERATED ALWAYS AS IDENTITY
    START WITH 150111111 INCREMENT BY 1,
    text VARCHAR2(50)
);

Avantages des colonnes d'identité :

  • Simplifie l'auto -implémentation d'incréments sans avoir besoin de séquences ou de déclencheurs.
  • Assure valeurs séquentielles uniques pour la colonne spécifiée.

Informations supplémentaires :

  • Oracle génère une séquence (ISEQ$$) pour prendre en charge la colonne d'identité .
  • Surveillez les informations d'incrémentation automatique à l'aide de ALL_TAB_IDENTITY_COLS vue.

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