本節介紹了PolarDB中用於操作序列對象的函數。
序列對象(也被稱為序列產生器或者簡稱為序列)是一個特定的單行記錄表,由CREATE SEQUENCE命令建立。一個序列對象通常為表的記錄產生唯一標識。在下面列出的序列函數為從序列對象中擷取連續的序列數提供了簡單,多使用者安全的方法。
文法
sequence.NEXTVAL
sequence.CURRVAL參數
- sequence:在CREATE SEQUENCE命令中分配給序列的標識符。下面介紹了這些函數的使用方法。
- NEXTVAL:這個函數的作用是將序列對象的當前位置指到這個對象的下一個值。這個操作完成後是不能撤銷的。即使多個會話同步執行NEXTVAL,每個會話將只能安全的取得一個唯一的序列值。
- CURRVAL:返回在當前會話中函數NEXTVAL在序列中最近取得的數值。(如果在會話中的序列從來沒有調用NEXTVAL,那麼報告一條錯誤)。需要注意的是因為這個函數返回所在會話的序列數值,它會給出關於從當前會話開始的時候,是否有其他的會話執行了NEXTVAL的可預見性答案。
如果已經使預設參數建立了一個序列對象,那麼在這個對象上調用NEXTVAL函數將返回從1開始的連續數值。通過在CREATE SEQUENCE命令中使用特定參數,可以擷取序列的其他系統行為。
說明 為避免從同一序列擷取數值的同步事務阻塞,函數NEXTVAL操作永不會復原;這就是說,一旦擷取了一個值,即使執行函數NEXTVAL的事務隨後中斷,也會認為已經使用了這個值。這就意味著中斷的事務可能會在已經分配的值的序列留下未使用的值的“漏洞”。