Уникальным ограничением является конфликт выбора и обновления на SQL сервере - PullRequest
0 голосов
/ 25 февраля 2020

У нас есть уникальный ключ в таблице загрузки изображения документа. Пока обновляется путь к изображению Do c, оно нарушает Unique. Но оператор select возвращает ноль для тех же значений.

Запросы:

select * from uploadeddocmaster 
where EmployeeCode='VSSPL-0402' and VendorCode='VEND-0001' -- 3 rows 

select * from uploadeddocmaster 
where EmployeeCode='VSSPL-0402' and VendorCode='VEND-0001' and Documentname='blurred-bg-f4mmedia-2.jpg' -- 0 row

Update uploadeddocmaster set Documentname='blurred-bg-f4mmedia-2.jpg',
ImagePath='http://ip addrs/testingimages/VSSPL-04034049489910055332026.jpg',
ModifiedBy='TNPL-0003',ActiveYn='Yes',DeleteYn='No'
where EmployeeCode='VSSPL-0402' and VendorCode='VEND-0001' -- constraint vialotion 

Результирующий набор значений:

edit 1:

Окно OP вышеупомянутых запросов и изображения из error:

(затронуто 3 строк)

(затронуто 0 строк)

Msg 2627 , Уровень 14, Состояние 1, Строка 26 Нарушение ограничения UNIQUE KEY 'UK_UploadedDocMaster_Code_Name_Side_Vendor'. Невозможно вставить дубликат ключа в объект 'dbo.UploadedDocMaster'. Значение дублированного ключа (VSSPL-0402, blurred-bg-f4mmedia-2.jpg, VEND-0001). Оператор был прерван.


Вопрос в том, что не найдено записей для условия обновления where. Тогда почему уникальное ограничение нарушается. Здесь моя структура таблицы.

Alt + F1 таблицы и таблицы столбцов:

Column_name     Type    Computed    Length  Prec    Scale   Nullable    TrimTrailingBlanks  FixedLenNullInSource    Collation
SearialNo       int         no      4       10      0       no          (n/a)               (n/a)                   NULL
EmployeeCode    varchar     no      15                      no          no                  no                      SQL_Latin1_General_CP1_CI_AS
DocumentName    varchar     no      100                     no          no                  no                      SQL_Latin1_General_CP1_CI_AS
Side            varchar     no      10                      yes         no                  yes                     SQL_Latin1_General_CP1_CI_AS
ImagePath       varchar     no      -1                      no          no                  no                      SQL_Latin1_General_CP1_CI_AS
VendorCode      varchar     no      15                      no          no                  no                      SQL_Latin1_General_CP1_CI_AS
ActiveYn        varchar     no      3                       yes         no                  yes                     SQL_Latin1_General_CP1_CI_AS
DeleteYn        varchar     no      3                       yes         no                  yes                     SQL_Latin1_General_CP1_CI_AS
CreatedDate     datetime    no      8                       yes         (n/a)               (n/a)                   NULL
CreatedBy       varchar     no      15                      no          no                  no                      SQL_Latin1_General_CP1_CI_AS
ModifiedDate    datetime    no      8                       yes         (n/a)               (n/a)                   NULL
ModifiedBy      varchar     no      15                      no          no                  no                      SQL_Latin1_General_CP1_CI_AS

Alt + F1 таблицы и таблицы индексов:

index_name                                  index_description                                       index_keys
UK_UploadedDocMaster_Code_Name_Side_Vendor  nonclustered, unique, unique key located on PRIMARY     EmployeeCode, DocumentName, Side, VendorCode

Alt + F1 таблицы и таблицы ограничений :

constraint_type         constraint_name                             delete_action   update_action   status_enabled  status_for_replication  constraint_keys
UNIQUE (non-clustered)  UK_UploadedDocMaster_Code_Name_Side_Vendor  (n/a)           (n/a)           (n/a)           (n/a)                   EmployeeCode, DocumentName, Side, VendorCode

Спасибо,

Пугал.

...