【问题标题】:Updating remote view with dynamic value throws an error使用动态值更新远程视图会引发错误
【发布时间】: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)

为什么会出现错误,是什么意思?

【问题讨论】:

标签: tsql sql-update linked-server


【解决方案1】:

通过实现一个更新 vwItem 而不是使用可更新视图的 sproc 解决了这个问题

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 2015-01-15
    • 2021-12-31
    • 2018-05-03
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 2017-09-10
    • 2012-03-13
    相关资源
    最近更新 更多