Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server T-SQL:Msg 2627,14级,状态1,更新中_Sql Server_Tsql - Fatal编程技术网

Sql server T-SQL:Msg 2627,14级,状态1,更新中

Sql server T-SQL:Msg 2627,14级,状态1,更新中,sql-server,tsql,Sql Server,Tsql,我有一个SQL表,如下所示: CREATE TABLE [LocalizedCountries] ( [Guid] UNIQUEIDENTIFIER NOT NULL, [CustomerLanguageGuid] UNIQUEIDENTIFIER NOT NULL, [CountryGuid] UNIQUEIDENTIFIER NOT NULL, [LocalizedCountryName] AddressCountryType NOT NULL, C

我有一个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\u LocalizedCountries\u 1]
,即确保每对列
[CountryGuid],[CustomerLanguageGuid]
都是唯一的

我在表中有一行,它在表的所有列中都有值

但是,当我为该行提供UPDATE语句时,它会给我一个与向表中插入重复值相关的错误

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
错误:

味精2627,第14级,状态1,第4行
违反唯一密钥约束“TUC_LocalizedCountries_1”。无法在对象“dbo.LocalizedCountries”中插入重复键。重复的键值为(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
表,具有完全相似的结构和约束,并且该表没有显示错误。

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

即使错误消息谈到插入重复对象,UPDATE语句的约束冲突错误也会给出相同的消息

味精2627,第14级,状态1,第4行
违反唯一密钥约束“TUC_LocalizedCountries_1”。无法在对象“dbo.LocalizedCountries”中插入重复键。重复的键值为(fe73a07d-8505-89c2-450b-4e3f4241f1bb、935de428-12da-4fd5-9c64-ab87747fa734)


那么,被违反的唯一约束的确切定义是什么?检查该约束确保了什么-然后您可能会理解为什么它会在您的第一个
UPDATE
语句中抛出此错误。您必须已经有一个不同的行,其countryguid='FE73A07D-8505-89C2-450B-4E3F4241F1BB'和customlanguageguid='935de428-12da-4fd5-9c64-ab87747fa734'为什么要将Guid列更新为相同的值已经是了?您还需要为聚集索引使用另一列,或者为主键上的大量碎片做好准备。由于我使用ASP.NET,此SQL语句是从SQL探查器收集的-这就是为什么其中有一些额外的列。然而,我想我解决了这个问题。表中已经有一些数据。我的Javascript没有收集正确的guid,因此这个UPDATE语句将要更新表,以便与约束发生冲突。因此,混淆源于错误消息本身,它谈到插入数据,甚至SQL语句也是更新的。谢谢你们的帮助