73 votes

Violation de clé unique dans SQL Server - Est-il prudent de supposer l'erreur 2627?

Je dois détecter les violations des contraintes UNIQUE de manière particulière à l'aide d'une application C # que je suis en train de développer. Est-il prudent de supposer que Error 2627 correspondra toujours à une violation de ce type, de sorte que je puisse utiliser

 if (ThisSqlException.Number == 2627)
{
    // Handle unique constraint violation.
}
else
{
    // Handle the remaing errors.
}
 

?

131voto

gbn Points 197263

2627 est une contrainte unique (inclut la clé primaire), 2601 est un index unique

 SELECT * FROM sys.messages
WHERE text like '%duplicate%' and text like '%key%' and language_id = 1033
 

4voto

Damien_The_Unbeliever Points 102139

Dans une approximation, oui.

Si vous recherchez l'erreur 2627 sur le site d'événements et d'erreurs Microsoft pour SQL Server, vous devriez accéder à cette page , qui indique que le message concernera toujours une violation de clé en double (notez les parties paramétrées et celles qui ne le sont pas):

 Violation of %ls constraint '%.*ls'. Cannot insert duplicate key in object '%.*ls'.
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X