【问题标题】:UPDATE OPENQUERY failureUPDATE OPENQUERY 失败
【发布时间】:2011-12-13 20:36:27
【问题描述】:

我在尝试从 SQL Server 对 MySql 数据库执行以下 OPENQUERY 语句时遇到错误。

UPDATE OPENQUERY(MYWPDB, 'SELECT total FROM wp_tt WHERE id = 112121') SET total = 1

错误是“键列信息不足或不正确。更新影响的行太多”。

该语句应该将“total”字段更新为“1”的值。它是一个整数字段,'id' 是表上的主键。我使用的是 SQL Server 2000。

【问题讨论】:

    标签: mysql sql-server sql-update openquery


    【解决方案1】:

    我在更新 iSeries 的 openquery 中遇到了同样的问题。我的 openquery 也在游标内。 解决方法是在选择中包含键列。

    所以在你的情况下,它会是这样的:

    UPDATE OPENQUERY(MYWPDB, 'SELECT key1, key2, total FROM wp_tt WHERE id = 112121') SET total = 1
    

    【讨论】:

      【解决方案2】:

      事实证明查询没有问题。我试图在存储过程中的游标操作中执行语句。我在游标操作之外对其进行了测试,它处理得很好。

      但是,由于我仍然需要它在光标内工作,我不得不继续挖掘,最终发现四部分语法可以解决问题。所以查询改为:

      UPDATE MYWPDB...wp_tt SET total = 1 WHERE id = 112121
      

      【讨论】:

      • 我认为您不需要最后的“WHERE”子句。相反,您只需要在原始 openquery 中选择 id。我遇到了同样的问题并按照您的示例进行操作,但是在将 id 添加到选择后,即使没有最终的“WHERE”,它也可以正常工作。
      猜你喜欢
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多