Ошибка обновления оператора

У меня есть стол [dbo].[ProductComponentRelationship] с 4 полями

[ProductComponentRelationshipID] PK, INt, Not Null
[ProductItemID] FK, Int Not Null
[ComponentItemID] FK, Int, Not Null
[SequenceNumber] int null

Эта таблица содержит кучу ценностей. Мне нужно обновить 4000 записей в таблице выше. Поэтому я заполнил отдельную таблицу productItemID и новым значением ComponentitemID. Я попытался запустить оператор SQL ниже, и это не удалось:

update ProductComponentRelationship set ComponentItemID = 
(select compid from cst_pricefix where 
ProductComponentRelationship.ProductItemID = cst_pricefix.prditem and 
ProductComponentRelationship.ProductComponentRelationshipID = ProductComponentRelationship.ProductComponentRelationshipID )

Error Message: 
Msg 515, Level 16, State 2, Line 1
Cannot insert the value NULL into column 'ComponentItemID', table 'SDSDB.dbo.ProductComponentRelationship'; column does not allow nulls. UPDATE fails.

1 ответ

Если это SQL Server, как это выглядит из dboВы можете обновить через объединение так:

update
    pcr
set
    ComponentItemID = f.compid
from
    ProductCompnentRelationship pcr
        inner join
    cst_pricefix f
        on pcr.ProductItemID = f.prditem

Я не уверен что ProductComponentRelationship.ProductComponentRelationshipID = ProductComponentRelationship.ProductComponentRelationshipID было в вашем исходном запросе, так что, возможно, чего-то не хватает в моем.

Другие вопросы по тегам