我在存储过程中遇到问题,当我尝试使用@@ 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.一些想法将不胜感激。感谢。
答案 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;