如何避免更新记录时MySQL存储过程中的变量值改变?
我们将创建一个存储过程,无论何时更新变量值,该过程都不会更改。
让我们首先创建一个表-
mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value int );
使用插入命令在表中插入一些记录-
mysql> insert into DemoTable(Value) values(100); Display all records from the table using select statement : mysql> select *from DemoTable;
输出结果
+----+-------+ | Id | Value | +----+-------+ | 1 | 100 | +----+-------+ 1 row in set (0.00 sec)
以下是存储过程,显示了更新后的旧值-
mysql> DELIMITER //
mysql> CREATE PROCEDURE updateValue100()
BEGIN
DECLARE myValue int;
select @myValue :=(select Value from DemoTable where Id=1);
select @myValue;
update DemoTable set Value=200 where Id=1;
select @myValue :=(select Value from DemoTable where Id=1);
select @myValue;
END
//
mysql> DELIMITER ;现在您可以使用CALL命令调用存储过程-
mysql> call updateValue100();
输出结果
+-------------------------------------------------------+ | @myValue :=(select Value from DemoTable where Id=1) | +-------------------------------------------------------+ | 100 | +-------------------------------------------------------+ 1 row in set (0.00 sec) +----------+ | @myValue | +----------+ | 100 | +----------+ 1 row in set (0.01 sec) +-------------------------------------------------------+ | @myValue :=(select Value from DemoTable where Id=1) | +-------------------------------------------------------+ | 200 | +-------------------------------------------------------+ 1 row in set (0.16 sec) +----------+ | @myValue | +----------+ | 200 | +----------+ 1 row in set (0.17 sec)