mysql:3845
From: MAO <MAO <mao@xxxxxxxxxx>>
Date: Wed, 27 Jun 2001 19:00:24 +0900
Subject: [mysql 03845] update した件数をカウントしたい。
にしかわともうします。
いつも質問ばかりで申し訳ないのですが、おしえてください。
現在、Linux上でMYSQL+DBI+Perlでプログラムを組んでいます。
たとえば、SQLシェルで、
mysql> update tbl_a set serial = 2 where uid = 1;
とした場合
--
Query OK, 1 row affected (0.46 sec)
Rows matched: 2  Changed: 1  Warnings: 0
--
といった結果が返ってくるとします。
上記の場合、マッチしたのが1件で変更したのが、1件とわかるのですが、
Perl上でその値を取得する場合はどのようにすればいいのでしょうか?
現状は、よい方法がわからない為、
#### マッチした件数 #####
$select_sql = q(select count(*) from tbl_a where uid = 1);
$sth = $dbh->prepare("$select_sql") or die &error('SQL定義エラー');
$sth->execute() or die &error('SQL実行エラー');
@result = $sth->fetchrow_array();
$match_num = @result[0];
#### 変更した件数 #####
$select_sql = q(select count(*) from tbl_a where uid = 1 and serial !=2);
$sth = $dbh->prepare("$select_sql") or die &error('SQL定義エラー');
$sth->execute() or die &error('SQL実行エラー');
@result = $sth->fetchrow_array();
$chenge_num = @result[0];
と、言った形で、先に、selectでマッチするものを探して、件数を割り出し、
その後アップデートをかけています。
スマートな方法があれば、おしえていただけないでしょうか。
よろしくおねがいいたします。
-> 3845 2001-06-27 19:00 [MAO <mao@xxxxxxxxxx>] update した件数をカウントしたい。 3846 2001-06-27 19:31 ┗[TSUTSUMI Thoru <tutu] 3848 2001-06-27 22:41 ┗[MAO <mao@xxxxxxxxxx>] 3852 2001-06-28 10:31 ┣[TSUTSUMI Thoru <tutu] 3856 2001-06-28 12:17 ┃┗["Kawai,Takanori" <GC] 3853 2001-06-28 11:02 ┗[Akihiko Shinohara <s] 3857 2001-06-28 12:31 ┗["Kawai,Takanori" <GC] 3860 2001-06-28 16:46 ┗[MAO <mao@xxxxxxxxxx>] 3861 2001-06-28 17:36 ┗[TSUTSUMI Thoru <tutu]