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

Comment puis-je ajouter une fonctionnalité d'incrémentation automatique aux colonnes existantes dans les bases de données Oracle ?

DDD
Libérer: 2024-12-26 09:46:10
original
556 Les gens l'ont consulté

How Can I Add Auto-Incrementing Functionality to Existing Columns in Oracle Databases?

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)
);
Copier après la connexion

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 :

  1. Créer une séquence :
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
Copier après la connexion
  1. Modifier la table et ajouter une clé primaire :
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
Copier après la connexion
  1. Créer Déclencheur :
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

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');
Copier après la connexion

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
Copier après la connexion

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!

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