T-SQL:Msd 2627,级别14,状态1,在UPDATE中

时间:2016-02-11 16:50:15

标签: sql-server tsql

我有一个SQL表如下:

CREATE TABLE [LocalizedCountries]
(
    [Guid] UNIQUEIDENTIFIER NOT NULL,
    [CustomerLanguageGuid] UNIQUEIDENTIFIER NOT NULL,
    [CountryGuid] UNIQUEIDENTIFIER NOT NULL,
    [LocalizedCountryName] AddressCountryType NOT NULL,

    CONSTRAINT [PK_LocalizedCountries] PRIMARY KEY ([Guid]),
    CONSTRAINT [TUC_LocalizedCountries_1] UNIQUE ( [CountryGuid], [CustomerLanguageGuid])
)
GO

因此,有[TUC_LocalizedCountries_1]约束,以确保每对列[CountryGuid], [CustomerLanguageGuid]都是唯一的。

我在表格中有一行,其中包含所有表格列中的值。

但是,当我为该行提供 UPDATE 语句时,它会向我提供与 INSERT 重复值相关的错误。< / p>

UPDATE [dbo].[LocalizedCountries]
SET [Guid] = N'591545A9-F2C7-497E-A299-1C8471223CE9',
    [CustomerLanguageGuid] = N'935DE428-12DA-4FD5-9C64-AB87747FA734',
    [LocalizedCountryName] = N'Estonia',
    [CountryGuid] = N'FE73A07D-8505-89C2-450B-4E3F4241F1BB'      
WHERE Guid = N'591545A9-F2C7-497E-A299-1C8471223CE9'
GO

错误:

  

Ms 2627,Level 14,State 1,Line 4
  违反UNIQUE KEY约束&#39; TUC_LocalizedCountries_1&#39;。无法在对象&#39; dbo.LocalizedCountries&#39;中插入重复键。重复键值为(fe73a07d-8505-89c2-450b-4e3f4241f1bb,935de428-12da-4fd5-9c64-ab87747fa734)。

但是,如果输入 UPDATE 命令,则没有错误。

UPDATE [dbo].[LocalizedCountries]
SET [Guid] = N'591545A9-F2C7-497E-A299-1C8471223CE9',
    [LocalizedCountryName] = N'Estonia',
    [CountryGuid] = N'FE73A07D-8505-89C2-450B-4E3F4241F1BB'      
WHERE Guid = N'591545A9-F2C7-497E-A299-1C8471223CE9'

我很困惑是什么导致了这个错误。我有相同的LocalizedCities表,具有完全相似的结构和约束,并且该表没有显示错误。

1 个答案:

答案 0 :(得分:1)

看起来我解决了这个问题。这是一个有约束力的冲突。

即使错误消息谈到插入重复对象, UPDATE 语句的约束违规错误也会提供相同的消息。

  

Ms 2627,Level 14,State 1,Line 4
  违反UNIQUE KEY约束'TUC_LocalizedCountries_1'。无法在对象'dbo.LocalizedCountries'中插入重复键。重复键值为(fe73a07d-8505-89c2-450b-4e3f4241f1bb,935de428-12da-4fd5-9c64-ab87747fa734)。