发博文
正文 字体大小:

更新远程表:远程表不可更新

(2008-08-24 09:09:27)
标签:

it

分类: 学习

引用:http://topic.csdn.net/t/20060104/15/4497799.html

问题描述:

错误提示:远程表不可更新。远程表上的可更新键集驱动游标要求事务具有扫过游标的   REPEATABLE_READ   或   SERIALIZABLE   隔离级别。     
  如何解决?     
  declare   ml_abc   cursor   local   forward_only   for        
      select   prd_no,bat_no,qty,cst   from   ldserver.db_sdld.dbo.tf_ml   tf_ml   where   mo_no    @mo_no     --根据制令单查询该制令单领料情况  
  open   ml_abc  
        fetch   next  
        from   ml_abc   into   @prd_no,@bat_no,@qty,@cst  
  while   (@@fetch_status        --通过循环计算该制令单的成本  
          begin  
             
              fetch   next     from   ml_abc   into   @prd_no,@bat_no,@qty,@cst  
        end 

 

解决:

13 楼rouqu(石林#黄果树)回复于 2006-01-20 18:25:25 得分 85

1   你去检查一下这张表有没有索引   如果有   通过select...into   建一张无索引无主键的表   然后建立这个游标   结果如何?  
   
  2   declare   ml_abc   INSENSITIVE   cursor   local   forward_only   for   看什么结果  
   
  3   set   transaction   isolation   level   repeatable   read  
  Begin   tran  
  declare   ml_abc   cursor   local   forward_only   for        
      select   prd_no,bat_no,qty,cst   from   ldserver.db_sdld.dbo.tf_ml   tf_ml   where   mo_no   =   @mo_no     --根据制令单查询该制令单领料情况  
  open   ml_abc  
        fetch   next  
        from   ml_abc   into   @prd_no,@bat_no,@qty,@cst  
  while   (@@fetch_status   =   0   )     --通过循环计算该制令单的成本  
          begin  
             
              fetch   next     from   ml_abc   into   @prd_no,@bat_no,@qty,@cst  
        end  
   
  set   transaction   isolation   level   read   committed   又是什么结果?  

 

 

 

作者的解决方法:

问题已经解决,解决办法用了     rouqu(石林#黄果树)   的方法,  
   
  解决办法如下:  
   
  declare   ml_abc   INSENSITIVE   cursor   for    
  即加上   INSENSITIVE   关键字即可。  
   
   
  附:  
  游标的敏感性行为定义了对基行(用于建立游标)所做的更新是否对游标可见。敏感性也定义了能否通过游标进行更新。  
   
  如果在   Transact-SQL   DECLARE   语句中指定了   INSENSITIVE   关键字,或在   ODBC   中将   SQL_ATTR_CURSOR_SENSITIVITY   设置为   SQL_UNSPECIFIED   或   SQL_INSENSITIVE,游标将不反映数据修改。游标为只读且不支持更新。  
   
  如果在   Transact-SQL   DECLARE   语句中省略了   INSENSITIVE   关键字,或在   ODBC   中将   SQL_ATTR_CURSOR_SENSITIVITY   设置为   SQL_SENSITIVE,游标可以反映由当前用户所做的或由其他用户提交的数据修改。除使用只读游标外,可以使用游标进行定位更新。

阅读 评论 收藏 转载 打印举报
已投稿到:
  • 评论加载中,请稍候...

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有