我在 SQL Server 2008 R2 表中有几行
ConfirmTable (ItemID, Barcode)
Run Code Online (Sandbox Code Playgroud)
以及 DB2 头文件中的更多行
O1 (ItemId, barcode, ProductionUnit, OwnerName, Delivered, Qty)
Run Code Online (Sandbox Code Playgroud)
和详细文件
O2 (ItemId, barcode, Address, ItemName, Delivered, TotalLines)
Run Code Online (Sandbox Code Playgroud)
如果ItemID和Barcode存在于ConfirmTable. 我正在尝试使用以下查询,但似乎显示以下错误。
链接服务器“LINK_DB”的 OLE DB 提供程序“DB2OLEDB”返回消息“更新或刷新的键列信息不足。”
代码:
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
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下更新格式,但它对我不起作用。
http://www.experts-exchange.com/questions/28390846/OPENQUERY-in-sql-server-linked-server.html