mysql:12636
From: yoshiyasu tanaka <yoshiyasu tanaka <yoshiyasu.tanaka@xxxxxxxxxx>>
Date: Mon, 16 Jan 2006 11:52:58 +0900
Subject: [mysql 12636] Re: MySQL Connector/NET で Update できない
田中です。 UpdateCommandを取得してみました。 以下のような感じです。 -------------------- UPDATE `DB名`.`テーブル名` SET `列名`=?列名 , .... , (省略) , .... WHERE `列名` <=> ?Original_列名 AND .... AND (省略) AND .... ; SELECT `列名` , `列名` , (省略) , `列名` FROM `DB名`.`テーブル名` WHERE (`キー列名`=?Original_キー列名) -------------------- 18件までで成功する場合も19件で失敗する場合も同様です。 内部的に後半のSELECT文で元値を取得し、それを前半のWHERE句にバインドしているのでしょうか? うーん・・・ 06/01/14 に yoshiyasu tanaka<yoshiyasu.tanaka@xxxxxxxxxx> さんは書きました: > 田中です。 > なるほど、ありがとうございます。 > 確認して、また報告します。 > > 06/01/14 に 天野 潔<kiyoshi.amano@xxxxxxxxxx> さんは書きました: > > 天野です。 > > > > >"同時実行違反 : UpdateCommand によって 0件処理されました。" > > > > > >という、Exceptionが発生します。 > > > > このExceptionは、更新しようとしているフィールドの値が、データセットを読み込んだ > > ときの値と異なっているときに発生します。 > > > > もし、データが書き換えられていないのにこの例外が発生するとしたら、MySQLCommandBu > > ilderが自動生成したUpdateCommandに問題がある可能性がありますので、生成されたコマ > > ンド文を調べられるとよいでしょう。 > > > > コマンド文は、MySQLCommandBuilder.GetUpdateCommand で取得できます。 > > > > 生成されるコマンドは簡略化すると次のようなものです。テーブル table1 のキーフィー > > ルド keyfield がキー値である行のフィールド field1 を「元値」から「変更値」に変更 > > するとしたら、 > > > > update table1 set field1 = 変更値 where keyfield = キー値 and field1 = 元値 > > > > のような感じです。 > > ここで、where 句の該当行がない場合、上記Exceptionが発生します。 > > > > > > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ > > 天野 潔 <kiyoshi.amano@xxxxxxxxxx> > > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ > > > > >
12633 2006-01-14 00:49 [yoshiyasu tanaka <yo] MySQL Connector/NET で Update できない 12634 2006-01-14 13:46 ┗[天野 潔 <kiyoshi.am] 12635 2006-01-14 22:35 ┗[yoshiyasu tanaka <yo] -> 12636 2006-01-16 11:52 ┗[yoshiyasu tanaka <yo] 12637 2006-01-16 15:44 ┗[天野 潔 <kiyoshi.am] 12638 2006-01-16 16:48 ┗[yoshiyasu tanaka <yo]