DB2 généré automatiquement Colonne / GÉNÉRÉE TOUJOURS des avantages et des inconvénients sur une séquence
Plus tôt, nous avons été à l'aide de 'GÉNÉRÉS TOUJOURS' pour générer les valeurs de clé primaire. Mais maintenant, il est suggéré que nous devrions, au lieu d'utiliser "GÉNÉRÉE TOUJOURS", l'utilisation de la séquence de remplissage de la valeur de la clé primaire. Que pensez-vous peut-être la raison de ce changement? Il c'est juste une question de choix?
Plus Tôt Code:
CREATE TABLE SCH.TAB1
(TAB_P INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE),
.
.
);
Maintenant, il est
CREATE TABLE SCH.TAB1
(TAB_P INTEGER ),
.
.
);
maintenant lors de l'insertion, de générer de la valeur pour TAB_P par séquence.
OriginalL'auteur Rakesh Juyal | 2009-06-22
Vous devez vous connecter pour publier un commentaire.
J'ai tendance à utiliser des colonnes d'identité de plus de séquences, mais je vais comparer les deux pour vous.
Séquences peuvent générer des nombres pour n'importe quel but, tandis qu'une colonne d'identité est strictement attaché à une colonne dans une table.
Depuis une séquence est un objet indépendant, il peut générer des nombres de plusieurs tables (ou autre chose), et n'est pas affectée lorsque toute la table est supprimée. Lorsqu'une table avec une colonne d'identité est tombé, il n'y a pas de mémoire de ce que la valeur a été assignée en dernier par la colonne d'identité.
Une table ne peut avoir qu'une seule colonne d'identité, donc si vous souhaitez enregistrer plusieurs numéros séquentiels dans les différentes colonnes dans la même table, des objets de séquence peut gérer que les.
L'exigence la plus courante pour un numéro séquentiel générateur dans une base de données consiste à attribuer une technique clé d'une ligne, ce qui est bien géré par une colonne d'identité. Pour plus d'compliqué de génération de nombre de besoins, d'un objet séquence offre plus de flexibilité.
Je tiens également à souligner que vous avez la possibilité d'utiliser une colonne d'identité qui est GÉNÉRÉ PAR DÉFAUT. Cela vous permettra de migrer dans le vieux données sans en avoir la valeur d'identité touchée.
OriginalL'auteur Fred Sobotka
Cela pourrait probablement être pour manipuler des identifiants dans le cas où il y a beaucoup de suppressions sur la table.
Pour exemple: Dans le cas de l'identité, si vos identifiants sont
1
2
3
Maintenant, si vous supprimez des enregistrements 3, votre table
1
2
Et alors si votre insertion d'un nouvel enregistrement, l'id sera
1
2
4
Par opposition à cela, si vous n'êtes pas à l'aide d'une colonne d'identité et sont la génération de l'id à l'aide de code, puis après le supprimer pour le nouvel insert, vous pouvez calculer id max(id) + 1, donc l'id sera en ordre
1
2
3
Je ne vois pas d'autre raison, pourquoi une colonne d'identité ne doit pas être utilisé.
Dans ce cas, il sera 1,3,4,5 moins que des mesures soient prises pour régler les valeurs d'id pour toutes les lignes après la ligne supprimée ce qui en soi sera une tâche fastidieuse pour les grands pas de dossiers.
OriginalL'auteur Rashmi Pandit
Heres quelque chose que j'ai trouvé sur le publib site:
Comparant les colonnes d'IDENTITÉ et de séquences
Bien qu'il existe des similitudes entre les colonnes d'IDENTITÉ et de séquences, il y a aussi des différences. Les caractéristiques de chacun d'eux peut être utilisé lors de la conception de votre base de données et des applications.
Une colonne d'identité a les caractéristiques suivantes:
une partie d'un tableau uniquement lorsque la table
est créé. Une fois qu'une table est créée,
vous ne pouvez pas le modifier pour en ajouter une
colonne d'identité. (Toutefois, les
colonne d'identité est possible que les caractéristiques
être modifié.)
génère automatiquement des valeurs pour un
table unique.
la colonne est définie comme GÉNÉRÉ
TOUJOURS, les valeurs utilisées sont toujours
générés par le gestionnaire de base de données.
Les Applications ne sont pas autorisés à
fournir leurs propres valeurs au cours de la
la modification du contenu de la
table.
Un objet séquence présente les caractéristiques suivantes:
objet qui n'est pas lié à une
table.
les valeurs séquentielles qui peuvent être utilisés dans
SQL ou XQuery déclaration.
par n'importe quelle application, il y a deux
les expressions utilisées pour le contrôle de la
récupération de la valeur suivante dans le
séquence spécifiée et la valeur
généré antérieure à la déclaration
en cours d'exécution. La VALEUR PRÉCÉDENTE
l'expression renvoie le plus récemment
valeur générée pour l'
séquence pour une déclaration précédente
dans la session en cours. La PROCHAINE
La VALEUR de l'expression retourne la prochaine
la valeur de la séquence spécifiée. L'
l'utilisation de ces expressions permet à l'
même valeur pour être utilisé dans plusieurs
SQL et XQuery dans
plusieurs tables.
Alors que ce ne sont pas toutes les caractéristiques de ces deux éléments, ces caractéristiques vont vous aider à déterminer lequel utiliser en fonction de votre conception de base de données et les applications à l'aide de la base de données.
OriginalL'auteur Rashmi Pandit
Je ne sais pas pourquoi personne ne JAMAIS utiliser une colonne d'identité plutôt qu'une séquence.
Les séquences d'accomplir la même chose et sont beaucoup plus simple. Les colonnes d'identité sont beaucoup plus d'une douleur, surtout lorsque vous voulez faire de décharge et charge les données à d'autres environnements. Je ne vais pas aller dans toutes les différences que l'information peut être trouvée dans les manuels, mais je peux vous dire que les administrateurs de base de données ont presque toujours impliqué à chaque fois qu'un utilisateur souhaite migrer des données à partir d'un environnement à un autre lors d'une table avec une identité qui est en cause car il peut prêter à confusion pour les utilisateurs. Nous n'avons pas de problèmes quand une séquence est utilisée. Nous permettons aux utilisateurs de mettre à jour les objets de schéma afin qu'ils puissent modifier leurs séquences si ils en ont besoin.
OriginalL'auteur bill reno