我有一个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
表,具有完全相似的结构和约束,并且该表没有显示错误。
答案 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)。