時間:2024-02-13 10:22作者:下載吧人氣:14
九、序列操作函數:
序列對象(也叫序列生成器)都是用CREATE SEQUENCE創建的特殊的單行表。一個序列對象通常用于為行或者表生成唯一的標識符。下面序列函數,為我們從序列對象中獲取最新的序列值提供了簡單和并發讀取安全的方法。
函數 | 返回類型 | 描述 |
nextval(regclass) | bigint | 遞增序列對象到它的下一個數值并且返回該值。這個動作是自動完成的。即使多個會話并發運行nextval,每個進程也會安全地收到一個唯一的序列值。 |
currval(regclass) | bigint | 在當前會話中返回最近一次nextval抓到的該序列的數值。(如果在本會話中從未在該序列上調用過 nextval,那么會報告一個錯誤。)請注意因為此函數返回一個會話范圍的數值,而且也能給出一個可預計的結果,因此可以用于判斷其它會話是否執行過nextval。 |
lastval() | bigint | 返回當前會話里最近一次nextval返回的數值。這個函數等效于currval,只是它不用序列名為參數,它抓取當前會話里面最近一次nextval使用的序列。如果當前會話還沒有調用過nextval,那么調用lastval將會報錯。 |
setval(regclass, bigint) | bigint | 重置序列對象的計數器數值。設置序列的last_value字段為指定數值并且將其is_called字段設置為true,表示下一次nextval將在返回數值之前遞增該序列。 |
setval(regclass, bigint, boolean) | bigint | 重置序列對象的計數器數值。功能等同于上面的setval函數,只是is_called可以設置為true或false。如果將其設置為false,那么下一次nextval將返回該數值,隨后的nextval才開始遞增該序列。 |
對于regclass參數,僅需用單引號括住序列名即可,因此它看上去就像文本常量。為了達到和處理普通SQL對象一樣的兼容性,這個字串將被轉換成小寫,除非該序列名是用雙引號括起,如:
網友評論