mysql:7046
From: Kengo Jinno <Kengo Jinno <kengo@xxxxxxxxxx>>
Date: Tue, 25 Feb 2003 13:35:43 +0900
Subject: [mysql 07046] Re: ODBC 経由の UPDATE でエラーにならない
神野です。 Tue, 25 Feb 2003 13:16:32 +0900 ごろに <3E5AEE20.882CAB06@xxxxxxxxxx> の "[mysql 07043] Re: ODBC 経由の UPDATE でエラーにならない" のメールで kazuo kaku <kkaku@xxxxxxxxxx> さんは書きました。 > ODBC経由で、UPDATEでエラーにならないのなら > 上記のような回避方法は、思いつくのですが、 > ODBC経由であれば、UPDATEで一致するキーが無い時に > エラーが返って来ないのは、普通なのでしょうか? ODBCドライバ依存なのでは? ODBCドライバがやっているのは ・プログラムから与えられたクエリー文をDBMSに投げつける ・DBMSから返された結果をプログラムに返す だけでしょう。 「普通」かどうかはちょっとわかりかねます。 #SQLの定義やら、ODBCの仕様やら、調べてみないことには…? #参考までに。 #VC++のCRecordsetクラスでは、UPDATE実行後に「updateが反映された行数」 #を調べて(ということはODBCドライバからは返されているのでしょう)、 #それがゼロだったら例外を発生させる、という処理をしていたように #記憶しています。 ##ODBCドライバがやっているのではなく、CRecordset(=ODBCドライバ ##から見たら「プログラム」)がやっていることに注意。 > コマンドプロンプトからMYSQLへUPDATEコマンドを発行すれば > 一致するキーがないとエラーになります。 こちらのテストでは、ならないようですが。↓ | mysql> create table foo ( bar char(10), baz char(10) ); | Query OK, 0 rows affected (0.00 sec) | | mysql> insert into foo values ( 'bar', 'baz' ); | Query OK, 1 row affected (0.00 sec) | | mysql> select * from foo; | +------+------+ | | bar | baz | | +------+------+ | | bar | baz | | +------+------+ | 1 row in set (0.00 sec) | | mysql> update foo set baz = 'piyo' where bar = 'hoge'; | Query OK, 0 rows affected (0.00 sec) | Rows matched: 0 Changed: 0 Warnings: 0 「ゼロ件更新した」と言ってますね。 -- 神野健吾 <kengo@xxxxxxxxxx>
7031 2003-02-25 10:35 [kazuo kaku <kkaku@xx] ODBC 経由の UPDATE でエラーにならない 7037 2003-02-25 11:29 ┗[Kengo Jinno <kengo@x] 7039 2003-02-25 12:00 ┗[kazuo kaku <kkaku@xx] 7040 2003-02-25 12:11 ┣[Kengo Jinno <kengo@x] 7043 2003-02-25 13:16 ┃┗[kazuo kaku <kkaku@xx] 7045 2003-02-25 13:24 ┃ ┣[Ryuichiro Munechika ] 7048 2003-02-25 13:44 ┃ ┃┗[kazuo kaku <kkaku@xx] -> 7046 2003-02-25 13:35 ┃ ┣[Kengo Jinno <kengo@x] 7049 2003-02-25 13:51 ┃ ┃┗[kazuo kaku <kkaku@xx] 7047 2003-02-25 13:39 ┃ ┗[SUGAWARA Hajime <sug] 7041 2003-02-25 12:13 ┣[Daiju Azuma <daiju_a] 7042 2003-02-25 12:58 ┗[遠藤 俊裕 <endo_t@xx] 7044 2003-02-25 13:20 ┗[kazuo kaku <kkaku@xx]