2016-02-11 2 views
-1

У меня есть таблица SQL следующим образом:T-SQL: Msg 2627, Level 14, State 1, в UPDATE

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 заявления для этой строки, он дает мне ошибку, связанную с ВСТАВИТЬ ИНГИ повторяющегося значения в таблицу.

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 

Ошибка:

Msg 2627, Level 14, State 1, Line 4
Violation of UNIQUE KEY constraint 'TUC_LocalizedCountries_1'. Cannot insert duplicate key in object 'dbo.LocalizedCountries'. The duplicate key value is (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

Ну, что же такое ** определение ** этого уникального ограничения, которое нарушается? Проверьте, что это ограничение гарантирует, - тогда, может быть, вы поймете, почему он выдает эту ошибку в вашем первом утверждении 'UPDATE' –

+0

. У вас уже должна быть другая строка с countryguid = 'FE73A07D-8505-89C2-450B-4E3F4241F1BB' и customlanguageguid = ' 935de428-12da-4fd5-9c64-ab87747fa734 ' – andyb

+2

Почему вы обновляете столбец Guid до того же значения, которое оно уже есть? Вам также необходимо использовать другой столбец для вашего кластерного индекса или подготовиться к фрагментации MASSIVE на вашем первичном ключе. –

ответ

1

Похоже, я решил проблему. Это был конфликт с ограничением.

Даже сообщение об ошибке говорит о вставке дубликата объекта, UPDATE ошибка нарушения ограничения заявления, дает такое же сообщение.

Msg 2627, Level 14, State 1, Line 4
Violation of UNIQUE KEY constraint 'TUC_LocalizedCountries_1'. Cannot insert duplicate key in object 'dbo.LocalizedCountries'. The duplicate key value is (fe73a07d-8505-89c2-450b-4e3f4241f1bb, 935de428-12da-4fd5-9c64-ab87747fa734).

Смежные вопросы