[前][次][番号順一覧][スレッド一覧]

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]