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