我有一个查询,它用变量限制更新表中的多行。我需要从更新的行中获取数据,以便知道哪些行受到了影响。我写了一个简单的程序:
DELIMITER $$
CREATE PROCEDURE select_update(IN myId INT, IN myAttr VARCHAR(10), IN myAmount MEDIUMINT)
begin
SELECT data FROM mytable WHERE id IS NULL AND attr = myAttr LIMIT myAmount;
UPDATE mytable SET id = myId WHERE id IS NULL AND attr = myAttr LIMIT myAmount;
end$$
DELIMITER ;
这个select语句是否总是返回update语句影响的完全相同的行?另一个用户是否可能在运行此过程时执行查询,从而可能更改select和update之间受影响的行?
1条答案
按热度按时间mxg2im7a1#
创建一个临时表来保存要更新的行的主键。