2012-12-20 66 views
1

我想知道是否有人能告訴我這個函數是否符合ANSI SQL標準,並且爲了將來的參考有任何資源可以用來查找我的SQL是否符合ANSI標準。而我正在使用的DBMS是MySQL。此函數是否符合ANSI SQL標準?

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

一般來說,我只是建議獲得MS SQL Express的副本並在那裏運行你的功能。如果它運行在MySql中,並且它運行在MS SQL中,那麼你應該很好。 –

+0

這對Linux人不起作用,更重要的是仍然不能保證符合標準。 – mvp

+0

@mvp,如果他真的需要100%積極服從,那麼是的,他可以去獲得官方文件並通過和通過學習。或者他可以按照我的建議進行操作,在極少數情況下,他所編寫的內容可以在這兩個平臺上運行,但仍不符合SQL,並且不會在其他目標平臺上運行(這是目標,對不對?)他可以在他們出現時解決這些問題。 –

回答

0

基於此評論

基本上,我需要的,如果檢索新的更新值i執行更新 表SET當前=當前+ 1,然後執行選擇以獲取 新值,這可能會導致問題,如果另一個事務 更新之間n更新並選擇。

我不認爲你的問題與SQL標準有什麼關係。我認爲你的問題與transactionstransaction isolation levels.

相關問題