【发布时间】:2015-04-14 14:30:56
【问题描述】:
我有一个通过链接服务器 ([sql\dev].) 访问的可更新视图 (vwItem)。
当我使用静态数据更新视图时,基础表也会更新。
更新 ci SET CertifiedNumber = '44444'
FROM [sql\dev].contact.dbo.vwItem ci WITH (NOLOCK)
WHERE ci.CertifiedBatchID IN (5829)
但是当我尝试传递一个动态值时,
声明@lo_vch_CertifiedNumber varchar(50) = '1111111111222222222233333'
更新 ci
SET CertifiedNumber = @lo_vch_CertifiedNumber + '44444'
FROM [sql\dev].contact.dbo.vwItem ci 带(无锁)
WHERE ci.CertifiedBatchID IN (5829)
失败,出现以下错误信息
语句已终止。
Msg 16932, Level 16, State 1, 第 1 行
游标有一个 FOR UPDATE 列表和请求的列 待更新不在此列表中。
我什至不使用游标,但错误提到了游标..
这里是“vwItem”的定义。
创建视图 [dbo].vwItem
使用架构绑定
作为
选择 CertifiedItemID = cast(CertifiedItemID as varchar),
CertifiedNumber、[服务]、重量、价格、CertifiedBatchID
来自 dbo.tblItem (nolock)
为什么会出现错误,是什么意思?
【问题讨论】:
-
我知道这不是一回事,但听起来它与您的问题有关。 support.microsoft.com/en-us/kb/2520691
标签: tsql sql-update linked-server