MySQL提供了一種自動增加記錄ID的機制。這可以用于許多目的,但是我需要能夠使用ORACLE提供的序列。顯然,為此目的創建表是沒有意義的。解決方案應該很簡單:1)創建一個表以托管所有需要的序列,2)創建一個增加特定序列的值并返回新值的函數,3)創建一個返回序列當前值的函數。從理論上講,它看起來很簡單...但是...當增加一個序列的值時(與nextvalOracle中的相同),您需要阻止其他會話執行此操作(甚至獲取當前值),直到更新完成。兩個理論選擇:a-使用UPDATE語句,一次即可返回新值,或者b-將表鎖定在UPDATE和SELECT之間。不幸的是,MySQL似乎不允許在函數/過程中鎖定表,并且在嘗試在單個語句(例如UPDATE ... RETURNING ...)中完成整個操作時,必須使用@ -type變量,這些變量必須存在功能/程序的完成。有人對此有想法/可行的解決方案嗎?謝謝。
2 回答

慕少森
TA貢獻2019條經驗 獲得超9個贊
我懂了。我通常會同意您的意見(例如,insert / updates / selects屬于PROCEDURES),只是在這種情況下,它將是一組通用服務(即,創建序列,刪除序列,獲取序列當前值,獲取序列下一個值等) ),因此(至少以我的口味)它具有一系列功能。就像我說的,有品味。非常感謝您的推薦。當然投票
添加回答
舉報
0/150
提交
取消