電子書籍の厳選無料作品が豊富!

こんばんは。

業務で、以下の情報を知りたいと思います。
5000件のupdate文をマルチクエリ実行した際に、
1.すべての条件が合致して、更新された(成功)
2.PKは合致するが、他の条件は合致しなかった(エラーとしてエラーコードとリクエスト情報を返します)
3.PKが合致するデータ自体が存在しなかった(対象のリクエストデータのみ、インサートの処理が実行されます)

以上を実現するために、以下のようなSQL文を作成して実行しようとしています
update tableA set column1=('aaa','bbb',column1) where pk='xx';

1.pk='xx'かつcolumn1='aaa'が満たされた場合、affected_rowsは1になります。
3.データ自体が存在しないので、affected_rowsは0です
2.については、matchedは1だが、changedは0という結果から判別したいのですが、関数としては、mysqli_infoを使用するしかないでしょうか。文字列が返却されてくるので、必要な情報(matchedとchangedのカウント)のみを取得できる方法を探しています

環境は、以下です
PHP5
MySQL(MySQLi接続)
FreeBSD

以上、よろしくお願いいたします。

A 回答 (1件)

私の解釈が違うかもしれませんが、



3. SELECT COUNT(*) FROM tableA WHERE pk='xx'; で得られた結果が0なら一致するデータなし。※1
1. UPDATE tableA SET column1='bbb' WHERE pk='xx' AND column1='aaa'; で affected_rows で更新された行数が取得する。※2
2. ※1の結果から※2の結果の差で取得

multi_query("SELECT COUNT(*) FROM tableA WHERE pk='xx'; UPDATE tableA SET column1='bbb' WHERE pk='xx' AND column1='aaa';");

で得られないでしょうか?
    • good
    • 0
この回答へのお礼

やはり、一度Selectを使用することで解決しました。
あいがとうございました

お礼日時:2008/10/10 01:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!