Dactylographiée Dataset ConstraintException sur insert

voix
0

Fondamentalement, j'ai une table qui contient des données hiérarchiques.

J'ai donc une colonne id et une colonne de Rollup qui pointe vers la colonne id pour les parents de chaque enfant.

Ce tableau est chargé à partir de la base de données à l'aide GetData () sur la TableAdapter puis autoincrementseed clé primaire de la table est définie à l'aide:

SELECT IDENT_CURRENT ( 'TableName') + 1

De nouveaux enfants sont créés dans la hiérarchie, j'appelle Update () sur le même TableAdapter.

La plupart du temps, cela fonctionne parfaitement, mais parfois je reçois la colonne ContraintException « id » est contraint à être un problème unique, et il semble se produire lorsque de nouvelles lignes sont ajoutées.

Normalement, je voudrais juste mettre la autoincrementseed et autoincrementstep à -1 et après la mise à jour la colonne id obtiendrait les valeurs correctes de la base de données, mais parce que la colonne Rollup dépend des valeurs de clé primaire cela ne fonctionnera pas.

Je ne peux pas appliquer chaque nouvelle ligne en direct soit parce que tous les changements dans son ensemble doivent être examinées par l'utilisateur avant d'être appliquées à la base de données.

Des idées?

EDIT: Je dois mentionner qu'aucun autre changement arrivent à cette table de toute autre source, donc il n'y a aucun problème de concurrence ici.

AUTRE EDIT: Aujourd'hui, je vérifie les valeurs de la table avant que la méthode de mise à jour a été appelé et a remarqué que le problème est lié aux nouvelles lignes ne sont pas correctement triées sur la clé primaire.

Ainsi, par exemple, les lignes se sont, 960.961.963.962 et quand 962 a été inséré j'ai eu l'erreur 962 existe déjà. La mise à jour avait inséré les lignes pour cela ne serait pas arrivé.

Pourquoi l'indice de tableau, les lignes non dans l'ordre par clé primaire?

Créé 17/08/2010 à 17:14
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

en utilisant SELECT IDENT_CURRENT ( « TableName ») + 1 vous tuer à moins que vous n'avez qu'un seul utilisateur

Créé 17/08/2010 à 17:28
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more