我想知道是否有人可以告诉我这个函数是否遵循ANSI SQL标准,并且为了将来参考,我可以使用任何资源来查找我的SQL是否符合ANSI标准。我使用的DBMS是MySQL。
CREATE FUNCTION INCREMENT()
RETURNS INT
BEGIN
DECLARE oldVal INT;
DECLARE newVal INT;
SELECT currentVal INTO oldVal FROM atable FOR UPDATE;
SET newVal=oldVal +1;
UPDATE atable SET currentVal=newVal;
RETURN newVal;
END;
答案 0 :(得分:0)
找到一个验证工具,可以检查您的SQL是否符合SQL 2003 http://developer.mimer.com/validator/parser200x/index.tml
答案 1 :(得分:0)
基于此评论
如果我做UPDATE,基本上我需要检索新的更新值 表SET current = current + 1然后执行select来获取 新价值,这可能导致问题,如果另一个交易 更新和选择之间的更新。
我认为您的问题与SQL标准没有任何关系。我认为您的问题与transactions和transaction isolation levels.
有关