1

我想知道是否有人可以告诉我这个函数是否遵循 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;
4

2 回答 2

0

找到了一个验证工具,可以检查您的 SQL 是否符合 SQL 2003。
http://developer.mimer.com/validator/parser200x/index.tml

于 2012-12-28T11:01:08.733 回答
0

基于此评论

基本上我需要检索新的更新值,如果我执行 UPDATE table SET current = current + 1 然后执行选择以获取新值,这可能会导致问题,例如如果另一个事务在更新和选择之间更新。

我认为您的问题与 SQL 标准没有任何关系。我认为您的问题与事务事务隔离级别有关。

于 2012-12-28T12:08:16.893 回答