Si vous avez déjà travaillé avec les bases de données MySQL, vous connaissez peut-être la colonne Auto_increment. Dans Oracle, nous utilisons une colonne d'identité pour permettre au moteur de base de données de générer automatiquement une valeur numérique pour chaque ligne ajoutée au tableau à un intervalle spécifique.
Colonne d'identité Oracle
La colonne d'identité Oracle est disponible en version 12c et au-dessus. La colonne d'identité génère automatiquement une valeur numérique pour chaque ligne insérée dans le tableau.
Étant donné que le moteur de la base de données génère une valeur unique pour chaque ligne ajoutée au tableau, elle fonctionne comme une clé primaire de substitution dans la base de données.
Dans Oracle, nous définissons une colonne d'identité en utilisant la syntaxe ci-dessous:
Généré [toujours | Par défaut [sur null]]
Comme identité [(identité_options)]]
Les paramètres de déclaration, comme on le voit ci-dessus, comprennent les éléments suivants:
Colonnes d'identité Oracle
Découvrons des exemples de base de la façon d'utiliser la colonne d'identité dans les bases de données Oracle.
Colonne d'identité Oracle Create
La façon la plus courante et recommandée de créer une colonne d'identité à un tableau est pendant la création.
Un exemple ci-dessous montre comment nous pouvons y parvenir:
Créer des produits de table (
Numéro Product_id généré toujours comme identité,
product_name varchar2 (255) pas null,
Numéro de quantité non nulle (Quantité> 0),
numéro de prix,
Clé primaire (Product_id)
));
L'énoncé ci-dessus crée un tableau appelé Products avec une colonne d'identité de Product_id.
Nous pouvons ensuite insérer quelques échantillons d'enregistrements dans la table en tant que:
Insérer dans les valeurs de produits (Product_name, Quantity, Price) («Microsoft Volterra», 0, 599);
Dans ce cas, nous n'avons pas spécifié la valeur de la colonne Product_id dans le tableau ci-dessus. Cela permettra au moteur de base de données de générer automatiquement des valeurs pour les colonnes ajoutées. Comme mentionné, Oracle commencera à la valeur de 1 et l'incrément de 1 pour chaque ligne ajoutée.
Comme mentionné, la tentative d'ajouter une valeur pour la colonne d'identité entraînera une erreur:
Insérer dans les valeurs de produits (product_id, product_name, quantité, prix) (2, «Microsoft Volterra», 10, 599);
Erreur résultante:
Erreur SQL: ORA-32795: Impossible d'insérer dans une colonne d'identité toujours générée
En effet, la colonne d'identité est définie pour générer toujours.
Exemple 2 - Identité Oracle générée par défaut.
Nous pouvons également modifier la colonne d'identité de toujours générée à générée par défaut comme:
Créer des produits de table (
Numéro Product_id généré par défaut comme identité,
product_name varchar2 (255) pas null,
Numéro de quantité non nulle (Quantité> 0),
numéro de prix,
Clé primaire (Product_id)
));
Dans ce cas, nous pouvons ajouter manuellement une valeur pour la colonne Product_id.
Insérer dans les valeurs de produits (product_id, product_name, quantité, prix) (1, «Microsoft Volterra», 0, 599);
De même, si nous ne fournissons pas de valeur pour la colonne, le moteur de la base de données le générera automatiquement.
Vous ne pouvez pas insérer une valeur nulle dans une colonne d'identité comme défini ci-dessus.
Exemple 3
Nous pouvons également définir le début et les valeurs d'intervalle pendant la création de table comme indiqué:
Créer des produits de table (
Numéro Product_id généré par défaut lorsque l'identité commence avec 10 incrément par 2,
product_name varchar2 (255) pas null,
Numéro de quantité non nulle (Quantité> 0),
numéro de prix,
Clé primaire (Product_id)
));
Dans ce cas, les valeurs autoogénérées commenceront à dix et incrément de 2 pour chaque nouvelle ligne ajoutée au tableau.
Points à noter
Bien qu'une colonne d'identité fournit une plus grande commodité lorsque vous travaillez avec un grand ensemble de données, il est livré avec des restrictions. Ceux-ci inclus:
Conclusion
Dans cet article, vous avez découvert les différentes méthodes et techniques de travail avec la colonne d'identité dans les bases de données Oracle.