CORRECCIÓN: se produce un conflicto con la restricción de clave externa al actualizar las mayúsculas y minúsculas de los valores de la columna en la tabla de clave principal o cuando se rellenan los valores de las columnas de la tabla de clave principal en SQL Server 2005


Síntomas


Cuando actualiza la columna de clave principal de la tabla de clave principal en Microsoft SQL Server 2005 modificando el uso de mayúsculas y minúsculas de los valores de columna existentes o por relleno de valores de columna, recibe el siguiente mensaje de error:
Msj 547, nivel 16, estado 0, línea 1El instrucción UPDATE entra en conflicto con la restricción de referencia "<la restricción>". El conflicto se produjo en la base de datos "<nombre de la base de datos>", tabla "<nombre de tabla>", columna '<nombre de columna>'.
Por ejemplo, este problema se produce en las siguientes situaciones:

Ejemplo 1

  • Cree dos tablas con una intercalación sin distinción entre mayúsculas y minúsculas, como la intercalación SQL_Latin1_General_CP1_CI_AS.
  • Cree una relación de clave principal y externa entre estas dos tablas.
  • Para actualizar la columna de clave principal de la tabla de clave principal, cambie el uso de mayúsculas a minúsculas en los valores de las columnas existentes.

Ejemplo 2

  • Cree dos tablas.
  • Cree una relación de clave principal y externa entre estas dos tablas.
  • El valor ANSI_PADDING se establece en deshabilitado.Nota De forma predeterminada, el valor ANSI_PADDING se establece en desactivado.
  • Para actualizar la columna de clave principal de la tabla de clave principal, rellenando los valores de columna.

Causa


Este problema se produce porque los valores que son iguales en el nivel de tipo pueden ser distintos en el nivel binario. Por ejemplo, en el nivel de tipo, N'a ' es igual a N'A '. Sin embargo, en el nivel binario, N'a ' no es igual a N'A '. El mecanismo de optimización supone incorrectamente que la operación de actualización que cambia el caso no realiza cambios reales. Por lo tanto, la comprobación de PK-FK no se ha realizado correctamente.

Resolución


Información de Service Pack

Para resolver este problema, obtenga el Service Pack más reciente para SQL Server 2005. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
913089 Cómo obtener el Service Pack más reciente para SQL Server 2005

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a". Este problema se corrigió por primera vez en SQL Server 2005 Service Pack 3.

Más información


Para obtener más información acerca de la terminología relativa a las actualizaciones de software de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft