我正在尝试使用此更新链接表...
tng_id
...但我收到以下错误......
链接服务器“LINKSERVERID”的OLE DB提供程序“MSDASQL”返回消息“键列信息不足或不正确。 更新会影响太多行。“。
仅供参考:my.txt
是主键。
我该如何解决?
答案 0 :(得分:4)
我认为你需要在select查询中包含密钥,所以试试这个:
update openquery(
LINKSERVERID, 'select tng_id, tng_email from user_list where tng_id = 62873'
) set tng_email = 'blah@blah.com';
答案 1 :(得分:0)
我尝试了jpw上面的答案,但对我来说不起作用。
我开发了一个触发器,使用以下代码也收到了相同的错误:
begin
if TRIGGER_NESTLEVEL() > 1
return
declare @JCid int = (select top 1 iJCMasterID from inserted)
begin
update L set uiJCTxCMLineNumber = NewLineNum
from (
select
rank() over (order by idJCTxLines) NewLineNum
, iJCMasterID
, uiJCTxCMLineNumber
, idJCTxLines
from _btblJCTxLines
where iJCMasterID = @JCid
) L
where iJCMasterID = @JCid
end
end
go
但是,我将其更改为:
begin
if TRIGGER_NESTLEVEL() > 1
return
declare @JCid int = (select top 1 iJCMasterID from inserted)
begin
update L set uiJCTxCMLineNumber = NewLineNum
from (
select
rank() over (order by idJCTxLines) NewLineNum
, iJCMasterID
, uiJCTxCMLineNumber
, idJCTxLines
from _btblJCTxLines
where iJCMasterID = @JCid
) L
join inserted i on L.idJCTxLines = i.idJCTxLines
end
end
go
希望这会有所帮助。
答案 2 :(得分:0)
我通过向基础表添加唯一索引解决了这个错误。