2011-12-13 22 views
0

SQL ServerからMySqlデータベースに対して実行しようとしている次のOPENQUERYステートメントでエラーが発生します。UPDATE OPENQUERYエラー

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

エラーは「キー列の情報が不十分または不正確である。あまりにも多くの行が更新の影響を受けました」です。

ステートメントは、 '合計'フィールドを '1'の値に更新する必要があります。これは整数フィールドで、 'id'はテーブルの主キーです。私はSQL Server 2000を使用しています。

答えて

1

質問には何も問題はありません。私はストアドプロシージャ内のカーソル操作内でステートメントを実行しようとしていました。私はカーソル操作の外でそれをテストし、うまく処理しました。

しかし、私はまだカーソル内で作業する必要があったので、私は掘り続けていなければなりませんでした。そして最後に、4つの部分から成る構文がそのトリックを行うことがわかりました。したがって、照会は代わりに次のようになりました。

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

。代わりに、元のopenqueryでidを選択するだけで済みます。私は同じ問題を抱え、あなたの例に従ったが、selectにIDを追加した後、最終的な "WHERE"がなくても動作していた。 – Dan

2

iSeriesを更新するオープン・クエリーでも同じ問題がありました。私のopenqueryもカーソル内にあります。 この問題を解決するには、選択項目にキー列を含める必要があります。

だからあなたのケースでは、このようなものになるだろう:私はあなたが最後の「WHERE」句を必要としないと思う

UPDATE OPENQUERY(MYWPDB, 'SELECT key1, key2, total FROM wp_tt WHERE id = 112121') SET total = 1 
関連する問題