Détails
Comment créer un identifiant avec AUTO_INCREMENT sur Oracle ?
Il semble qu'il n'existe pas de concept d'AUTO_INCREMENT dans Oracle, jusqu'à la version 11g incluse.
Comment puis-je créer une colonne qui se comporte comme un auto-incrément dans Oracle 11g ?
387
3
Les colonnes "auto_increment" ou "identité" n'existent pas dans Oracle à partir d'Oracle 11g. Cependant, vous pouvez le modéliser facilement avec une séquence et un déclencheur :
Définition de la table :
Définition du déclencheur :
UPDATE :
La colonne [
IDENTITY
][1] est maintenant disponible sur Oracle 12c :ou spécifier des valeurs de départ et d'incrémentation, empêchant également toute insertion dans la colonne identité (
GENERATED ALWAYS
) (encore une fois, Oracle 12c+ uniquement)Alternativement, Oracle 12 permet également d'utiliser une séquence comme valeur par défaut :
[1] : http://docs.oracle.com/database/121/DRDAA/migr_tools_feat.htm#DRDAA109
Voici trois saveurs :
RAW
.x
est la colonne d'identité. RemplacezFOO
par le nom de votre table dans chacun des exemples.mettre à jour :
Oracle 12c introduit ces deux variantes qui ne dépendent pas des triggers :
La première utilise une séquence de manière traditionnelle ; la seconde gère la valeur en interne.
En supposant que vous voulez dire une colonne comme la colonne d'identité du serveur SQL ?
Dans Oracle, vous utilisez une SEQUENCE pour obtenir la même fonctionnalité. Je vais voir si je peux trouver un bon lien et le poster ici.
Mise à jour : il semble que vous l'ayez trouvé vous-même. Voici quand même le lien : http://www.techonthenet.com/oracle/sequences.php