MySql 5.5.40存储过程@@ Identity

时间:2015-06-25 10:06:59

标签: mysql database stored-procedures crud identity

我在存储过程中遇到问题,当我尝试使用@@ Identity的最后一个操作的变量进行ovverriding时。我会写一个例子:

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.一些想法将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

首先,@@Identity中没有MySQL。你一定错了,可能还在谈论SQL Server。来到你的情况,如果你仍然得到out_result = 12,那么我相信相应的UPDATE声明(如下所示)没有处理任何行,因为条件WHERE id = 37没有#&# 39; t匹配(OR)已返回FALSE。您可以使用@@ROWCOUNT系统全局变量检查并验证相同的内容。

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