2010-11-29 15 views
12

He procedimiento almacenado en MySQL, algo así como el siguiente:Obtener el número de filas afectadas en una declaración de actualización de 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 

¿Cómo puedo determinar cuántas filas se han modificado en esta actualización?

Respuesta

0

unidireccional, no muy óptimo es simplemente hacer una selección antes de hacer la actualización.

select count(*) from table1 where country = 'country1' 
+3

sólo es cierto para tabla bloqueada. – Basilevs

+1

Esto no indicará cuántas filas se han cambiado con el 'UPDATE'. – dolmen

+0

@dolmen lo hará SI la cláusula where coincide con las actualizaciones Y ninguno de los campos en el que se establecieron Y nada más los ha cambiado entre la actualización y seleccione definitivamente no ideal pero factible – MikeT

16

Uso ROW_COUNT():

SELECT ROW_COUNT(); 
+2

Tenga en cuenta que esto no aparece (como muchos otras cosas) para trabajar en _MySQL Workbench_ para Mac, pero funciona en la consola (y en los procedimientos almacenados, por supuesto). – bobobobo

-1

Pruebe el siguiente código:

int mysql_affected_rows ([ resource $link_identifier = NULL ]) 
+0

http://php.net/manual/en/function.mysql-affected-rows.php – mineroot

Cuestiones relacionadas