MySQL裡的found_row()與row_count()的說明及用法。本站提示廣大學習愛好者:(MySQL裡的found_row()與row_count()的說明及用法)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL裡的found_row()與row_count()的說明及用法正文
出處:mysqlpub.com
MySQL中有兩個函數來盤算上一條語句影響了若干行,分歧於SqlServer/Oracle,不要由於此方面的差別而惹起功效成績:
1,斷定Select獲得的行數用found_rows()函數停止斷定。
2,斷定Update或Delete影響的行數用row_count()函數停止斷定,這裡須要留意,假如Update前後的值一樣,row_count則為0,而不像SqlServer裡的@@rowcount或Oracle裡的rowcount,只需update到行,影響的行數就會年夜於0,而不管update前後字段的值能否產生了變更。
例子解釋:
MySQL上的測試(數據庫版本為:5.1.30):
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中。
這裡和oracle中的SQL ROWCOUNT分歧
ORACLE上的測試(數據庫版本為:10G):
1.創立數據庫表:
create table t(
id int,
name varchar2(50),
address varchar2(100),
primary key(id,name)
);
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';
此時檢查影響的行數:
v_RowCount := SQL%ROWCOUNT; ==〉履行成果為1;
4.再次測試
update t
set address = 'beijing'
where id = 1
and name = 'yubowei';
此時檢查影響的行數:
v_RowCount := SQL%ROWCOUNT; ==〉履行成果為1;
從下面的測試可以得出在ORACLE,只需更新的記載存在,則豈論現實由沒有修正數據,影響的行數都邑被積累記載上去。
注:今朝為止沒有甚麼參數能對row_count()能停止設置。假如須要,只能經由過程其他方法完成。