


Comment créer des colonnes à incrémentation automatique dans Oracle 11g et versions ultérieures ?
Jan 23, 2025 pm 11:31 PMCréation de colonnes de type AUTO_INCREMENT dans Oracle 11g
Dans les versions Oracle jusqu'à 11g, le type de colonne AUTO_INCREMENT n'est pas disponible nativement. Cependant, il existe des mécanismes alternatifs pour obtenir des fonctionnalités similaires.
Utilisation de séquences et de déclencheurs
L'approche la plus courante dans Oracle 11g consiste à utiliser une combinaison d'une séquence et d'un déclencheur :
Tableau Définition :
CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) ); CREATE SEQUENCE dept_seq START WITH 1;
Définition du déclencheur :
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END; /
Ce déclencheur attribue une valeur incrémentielle unique aux lignes nouvellement insérées, imitant le comportement de colonnes à incrémentation automatique.
Colonnes IDENTITY (Oracle 12c )
Dans Oracle 12c et versions ultérieures, le type de colonne IDENTITY a été introduit, offrant une véritable fonctionnalité d'incrémentation automatique :
Définition de table :
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
Cette définition crée une colonne 'c1' qui s'incrémente automatiquement à chaque nouvelle ligne insérée dans le table.
Vous pouvez également spécifier des valeurs de départ et d'incrément :
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
Utiliser des séquences comme valeurs par défaut (Oracle 12)
Une autre option dans Oracle 12 et versions ultérieures consiste à utiliser une séquence comme valeur par défaut pour un column :
CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) DEFAULT dept_seq.nextval NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) );
Cette approche attribue des valeurs incrémentielles à l'aide d'une séquence, mais l'opération d'incrémentation réelle est gérée par la 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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
