Obtenir la prochaine auto-incrémentation de la valeur pour la colonne du datatable?
J'ai une table avec une colonne d'auto-incrémentation. Comment puis-je obtenir la prochaine augmentation (-1,-2,-3,...) pour la colonne sans l'ajout d'une nouvelle ligne?
Je suis juste curieux, pourquoi auriez-vous besoin de faire cela?
J'ai un Parent et un enfant table avec un zéro ou une relation. Je veux afficher DataGridView qui ont des colonnes pour les deux et l'affichage de toutes les lignes de la Mère, indépendamment de si elle a un Enfant, mais l'enfant-éléments (essentiellement 2 colonnes) doivent encore être modifiable. Donc, si un enfant existe déjà, une édition d'un enfant de la colonne pour un enfant va produire une modification de la base de données, mais une modification sur un non-existant enfant va produire un insert. Je n'ai pas besoin de générer des Id pour les inserts (puisqu'ils sont temporaires, de toute façon), mais cela peut être nécessaire pour de futures extensions
J'ai un Parent et un enfant table avec un zéro ou une relation. Je veux afficher DataGridView qui ont des colonnes pour les deux et l'affichage de toutes les lignes de la Mère, indépendamment de si elle a un Enfant, mais l'enfant-éléments (essentiellement 2 colonnes) doivent encore être modifiable. Donc, si un enfant existe déjà, une édition d'un enfant de la colonne pour un enfant va produire une modification de la base de données, mais une modification sur un non-existant enfant va produire un insert. Je n'ai pas besoin de générer des Id pour les inserts (puisqu'ils sont temporaires, de toute façon), mais cela peut être nécessaire pour de futures extensions
OriginalL'auteur Rado | 2009-06-18
Vous devez vous connecter pour publier un commentaire.
Si elle correspond à votre conception, vous pouvez toujours créer la nouvelle ligne (datatable.newrow) et il y aura déjà attribué le nextId. Il est maintenant perdu, mais la ligne n'est pas engagé à la table jusqu'à ce que vous
AcceptChanges
.OriginalL'auteur hometoast
J'ai eu la solution du problème (et non Pas d'un travail autour) :
Pour obtenir la prochaine valeur d'incrémentation automatique de SQLServer :
Par conséquent,
Cela ne fonctionnera pas si les lignes sont supprimées à partir d'une table avec l'identité et la clé n'est pas consécutive.
Espère que ça aide.
IDENT_CURRENT
reviendra encore 1. mais il est supposé être 0. Depuis elle renvoie 1 et en augmentant par 1, 2 ce qui est faux.OriginalL'auteur Yugal Jindle
Vous pouvez utiliser la fonction MAX dans la méthode de sélection contre les DataTables.
Quelque chose comme (la syntaxe pourrait ne pas être tout à fait correct):
MSDN a une page avec toutes les expressions que vous pouvez utiliser. DataColumn..::.L'Expression De La Propriété
OriginalL'auteur Joe Doyle
Avez-vous un datatable avec une IA colonne, ou une base de données SQL avec une IA colonne? Si c'est le SQL db qui a la colonne, vous ne pouvez pas obtenir la valeur suivante parce que votre DataTable est déconnecté. Sinon, vous devrez attendre jusqu'à ce que vous faire une insertion et l'utilisation de @@IDENTITY ou une fonction similaire.
OriginalL'auteur Andrew Lewis
Si vous utilisez SQL Server, vous pouvez faire:
OriginalL'auteur João Marcus
Le meilleur moyen est d'utiliser le @@IDENTITY comme Andrew, parce que nous ne pouvons pas en déduire l'algorithme dans lequel SQL calcule l'identité suivante et si vous pensez à propos de plusieurs personnes, la mise à jour de la base de données de la valeur d'identité qui vous calculé ne sera pas la même lorsque vous essayez d'enregistrer la ligne à la base de données
OriginalL'auteur Rony
depuis l'auto incrémentation de la valeur est toujours la plus grande valeur dans cette colonne, vous pouvez juste obtenir à l'aide de max(nom de la colonne) +1.
Ou si le AutoIncrementStep est différente de 1. Facile à prendre en considération, mais toujours limitée par daughtkom note.
L'auto-incrémentation de la valeur n'est pas toujours la plus grande valeur. En fait, c'est un modèle commun d'utiliser des Id et un incrément de -1 pour les lignes ajoutées par le client, qui sont remplacés par des valeurs à partir de la base de données lors de la mise à jour.
OriginalL'auteur Progress Programmer