使用动态值更新远程视图会引发错误

时间:2015-04-14 14:30:57

标签: tsql sql-update linked-server

我有一个可通过链接服务器访问的可更新视图(vwItem)([sql \ dev]。)

当我使用静态数据更新视图时,基础表会更新。

  

更新ci SET CertifiedNumber =' 44444'
  FROM [sql \ dev] .contact.dbo.vwItem ci WITH(NOLOCK)
  在哪里ci.CertifiedBatchID IN(5829)

但是当我尝试传递动态值时,

  

声明@lo_vch_CertifiedNumber varchar(50)=   ' 1111111111222222222233333'
  更新ci
  SET CertifiedNumber = @lo_vch_CertifiedNumber +' 44444'
  FROM [sql \ dev] .contact.dbo.vwItem ci   WITH(NOLOCK)
  在哪里ci.CertifiedBatchID IN(5829)

失败,出现以下错误消息

  

该声明已被终止。
消息16932,Level 16,State 1,   第1行
光标有FOR UPDATE列表和请求的列   要更新的不在此列表中。

我甚至不使用游标,但错误提到了游标..

以下是" vwItem"的定义。

  

创建视图[dbo] .vwItem
  用schemabinding
  AS
    选择CertifiedItemID = cast(CertifiedItemID as varchar),
            CertifiedNumber,[服务],重量,价格,CertifiedBatchID
    来自dbo.tblItem(nolock)

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

1 个答案:

答案 0 :(得分:0)

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