2009-05-13 10 views
0

J'ai écrit cette servlet Java qui insère des éléments dans une table, mais elle échoue. Je pense que cela pourrait être dû à mon insertion et à ma suppression, ce qui m'a causé des problèmes. La servlet Java exécute une instruction d'insertion dans le serveur SQL. Dans mon journal d'erreur, il est écrit:Servlets java: ligne de clé dupliquée dans l'objet avec l'index unique 'XAK1timItem'

com.microsoft.sqlserver.jdbc.sqlserverexception: cannot insert duplicate key row in object 'dbo.timitem' with unique index 'XAK1timitem'. 

des idées? MISE À JOUR: j'ai trouvé qu'il y a un index appelé "XAK1timItem (Unique, Non-Clustered)" dont je ne suis pas sûr quoi faire avec .. espérons que cela aide la question.

Répondre

1

L'index unique impose l'unicité pour la combinaison des lignes incluses dans l'index. Donc, si vous avez une ligne dans la base de données qui a, pour la colonne indexée, des valeurs égales à celles que vous essayez d'insérer, vous obtiendrez une erreur de la base de données.

La partie AK indique que c'est un un LTERNATIVE k ey ce qui signifie sans doute que la table a une clé primaire régulière, et n'a pas besoin de compter sur l'AK pour l'identification unique d'une ligne.

Certaines options:

  • baisse l'indice sinon nécessaire
  • ajouter une colonne à l'index unique
  • faire l'index pas unique, de manière à permettre des doublons
  • vérifier s'il est déjà une ligne qui correspond à celle que vous êtes sur insérer et annuler l'insertion, mais je suppose que vous ne voulez pas faire cela
Questions connexes