У меня есть несколько строк в таблице SQL Server 2008 R2 в
ConfirmTable (ItemID, Barcode)
и другие строки в заголовочном файле DB2
O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
и Подробный файл
O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
Я хочу обновить статус DELIVERED в файлах O1 и O2 на «YES», если ItemID
и Barcode
существуют в ConfirmTable
. Я пытаюсь использовать следующий запрос, но, похоже, он показывает следующую ошибку.
Поставщик OLE DB "DB2OLEDB" для связанного сервера "LINK_DB" вернул сообщение "Недостаточно информации о ключевом столбце для обновления или обновления".
Код:
UPDATE OQ
SET OQ.Delivered='YES'
FROM OPENQUERY(LINK_DB, 'SELECT *
FROM XXXXR.HLIB.O1 O1O
LEFT JOIN XXXXR.HLIB.O2 O2O ON O1O.ItemID = O2O.ItemID
WHERE O1O.Qty > 0') OQ
INNER JOIN
ConfirmTable CT ON CT.Barcode = OQ.Barcode
Я также пробовал следующий формат обновления, но он у меня не работал.
http://www.experts-exchange.com/questions/28390846/OPENQUERY-in-sql-server-linked-server.html
EXECUTE (sql) AT linked_server
. Во-вторых, OQ является результатом JOIN, а не одной таблицы, так как вы хотите обновить ее, если она была локально? - person Lukasz Szozda   schedule 24.08.2015