【发布时间】:2012-12-07 20:41:32
【问题描述】:
我想知道是否有人可以告诉我这个函数是否遵循 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;
【问题讨论】:
-
一般来说,我只是建议获取一份 MS SQL Express 并在那里运行你的函数。如果它在 MySql 中运行并且在 MS SQL 中运行,那么你应该很好。
-
这对 Linux 人员没有帮助,更重要的是仍然不能保证符合标准。
-
UPDATE table SET current = current + 1有什么问题? -
@BrandonMoore:MySQL 和 SQL Server 没有定义 SQL 标准。如果一个函数在那里运行,那么它肯定不会满足 ANSI 标准。
-
@jcs:没有 DBMS 完全符合 SQL 标准——尤其是在存储过程和函数方面(MySQL 确实经常偏离标准。DB2 和 PostgreSQL 更接近于比 MySQL 标准)。
标签: mysql sql function standards ansi-sql