SOLUTION : un conflit avec la contrainte de clé étrangère se produit lorsque vous mettez à jour la casse des valeurs de colonne dans la table de clé primaire ou que vous encadrez les valeurs de colonne dans la table de clé primaire dans SQL Server 2005


Symptômes


Lorsque vous mettez à jour la colonne clé primaire de la table de clé primaire dans Microsoft SQL Server 2005 en modifiant la casse des valeurs de colonne existantes ou en remplissant les valeurs de colonne, vous recevez le message d’erreur suivant :
MSG 547, niveau 16, état 0, ligne 1La instruction mise à jour en conflit avec la contrainte de référence «<contrainte>». Le conflit s’est produit dans la base de données «<nom de la base de données>», table «<nom de la table>», colonne «<nom de la colonne>».
Par exemple, ce problème se produit dans les deux situations suivantes.

Exemple 1

  • Vous pouvez créer deux tables à l’aide d’un assemblage qui ne respecte pas la casse, tel que le regroupement SQL_Latin1_General_CP1_CI_AS.
  • Vous créez une relation clé primaire et clé étrangère entre ces deux tables.
  • Pour mettre à jour la colonne clé primaire de la table de clé primaire, modifiez la casse des valeurs de colonne existantes.

Exemple 2

  • Vous créez deux tables.
  • Vous créez une relation clé primaire et clé étrangère entre ces deux tables.
  • Le paramètre ANSI_PADDING est défini sur désactivé.Remarque Par défaut, le paramètre ANSI_PADDING est défini sur désactivé.
  • Vous pouvez mettre à jour la colonne clé primaire de la table de clé primaire en remplissant les valeurs de colonne.

Cause


Ce problème se produit car les valeurs égales au niveau de type peuvent être distinctes au niveau binaire. Par exemple, au niveau de type, N’a’est égal à N’A'. Toutefois, au niveau binaire, N’a’n’est pas égal à N’A'. Le mécanisme d’optimisation suppose que l’opération de mise à jour qui modifie la casse n’apporte aucune modification réelle. C’est la raison pour laquelle le contrôle PK-FK ne fonctionne pas.

Résolution


Informations sur le Service Pack

Pour résoudre ce problème, procurez-vous le dernier Service Pack pour SQL Server 2005. Pour plus d’informations, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
913089 Comment obtenir le dernier Service Pack pour SQL Server 2005

Statut


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article. Ce problème a été corrigé pour la première fois dans SQL Server 2005 Service Pack 3.

Informations supplémentaires


Pour plus d’informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft