注:mysql中的ROW_COUNT()可以返回前一個SQL進行UPDATE,DELETE,INSERT操作所影響的行數。
MySQL上的測試(數據庫版本為:5.1.22):
1.創建數據庫表:
復制代碼 代碼如下:
create table t(
id int,
name varchar(50),
address varchar(100),
primary key(id,name)
)engine =InnoDB;
2.插入測試數據:
復制代碼 代碼如下:
insert into t
(id,name,address)
values
(1,'yubowei','weifang'),
(2,'sam','qingdao');
3.更新:
復制代碼 代碼如下:
update t set address = 'weifang'
where id = 1 and name = 'yubowei';
此時查看影響的行數:
select row_count(); ==〉執行結果為0;
4.再更新:
復制代碼 代碼如下:
update t set address = 'beijing'
where id = 1 and name = 'yubowei';
此時查看影響的行數:
select row_count(); ==〉執行結果為1;
從上面的測試可以得出在MySQL中只有真正對記錄進行修改了的情況下,row_count才會去記錄影響的行數,否則如果記錄存在但是沒有實際修改則不會將該次更新記錄到row_count中。
備注:
今天用PREPARE動態處理了UPDATE語句後,發現ROW_COUNT()函數返回的老是-1 ,檢查了下原來是把row_count()放到了deallocate 語句後面了。
神一般的我,犯了這樣的錯,哈。