获取MySQL更新语句中受影响的行数?

Ala*_*laa 14 mysql sql stored-procedures

我在MySQL中存储过程,如下所示:

create procedure SP_Test (input1 varchar(20))
begin
update Table1 set Val1='Val' where country=input1;
//I want to see if this update changed how many rows and 
//do some specific action based on this number
....
end
Run Code Online (Sandbox Code Playgroud)

如何确定此更新更改了多少行?

Joe*_*lli 23

使用ROW_COUNT():

SELECT ROW_COUNT();
Run Code Online (Sandbox Code Playgroud)

  • 如何使用它?在哪里使用它?它没有回答问题。当我知道至少有一个受到影响时,我得到的行数 = 0。更新用户 SET Users.password=3 WHERE userID=1; //1 影响了 SELECT ROW_COUNT(); // 返回 0 (4认同)
  • 注意这不是_appear_(像许多其他的东西)在_MySQL Workbench_ for Mac中工作,但它确实在控制台中工作(当然也在存储过程中). (2认同)

Ran*_*ndy -2

一种不太理想的方法是在更新之前简单地进行选择。

select count(*) from table1 where country = 'country1'
Run Code Online (Sandbox Code Playgroud)

  • 这不会告诉“UPDATE”已更改了多少行。 (6认同)