Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obter valor atualizado no MySQL em vez de linhas afetadas


Você pode fazer isso com um procedimento armazenado que atualiza e, em seguida, seleciona o novo valor em um parâmetro de saída. O seguinte retorna uma coluna new_score com o novo valor.
DELIMITER $$   -- Change DELIMITER in order to use ; withn the procedure
CREATE PROCEDURE increment_score
(
   IN id_in INT
)
BEGIN
    UPDATE item SET score = score + 1 WHERE id = id_in;
    SELECT score AS new_score FROM item WHERE id = id_in;
END
$$            -- Finish CREATE PROCEDURE statement
DELIMITER ;   -- Reset DELIMITER to standard ;

Em PHP:
$result = mysql_query("CALL increment_score($id)");
$row = mysql_fetch_array($result);
echo $row['new_score'];