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がSQL2003に準拠しているかどうかを確認できる検証ツールを見つけました
。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 に答える