MySql 5.5.40 存储过程@@Identity

MySql 5.5.40 stored procedure @@Identity

当我尝试使用上次操作的@@Identity 值覆盖一个变量时,存储过程出现问题。我会写一个例子:

DECLARE out_result BIGINT(20);
SET out_result = -1;

UPDATE tableName SET name = "pippo" WHERE id = 12;
SELECT @@Identity INTO out_result;
-- here it works great and out_result value is 12

IF out_result > 0 THAN
    UPDATE otheTableName SET address = "Route 666" WHERE id = 37;
    SELECT @@Identity INTO out_result;
END IF;

我希望如果第一次操作成功,变量 out_result 大于 0,现在代码将进行第二次更新,就是这样。 在第二次更新后(但它也可能是删除,例如)我希望 out_result 变量将采用第二次更新的值(在本例中 out_result = 37),但事实并非如此。这里 out_result 仍然等于 12。一些想法将不胜感激。谢谢

首先MySQL中没有@@Identity。您一定是弄错了,可能是在谈论 SQL Server。对于您的情况,如果您仍然得到 out_result = 12 那么我相信相应的 UPDATE 语句(如下所示)没有处理任何行,因为条件 WHERE id = 37 不匹配(或) 已返回 FALSE。您可以使用 @@ROWCOUNT 系统全局变量进行检查和验证。

UPDATE otheTableName SET address = "Route 666" WHERE id = 37;