麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-用戶手冊-19. SQL命令-CREATE SEQUENCE

2019-09-08 23:33:26
字體:
來源:轉載
供稿:網友
CREATE SEQUENCE
名稱
CREATE SEQUENCE ― 創建一個新的序列號生成器 

語法
CREATE SEQUENCE seqname [ INCREMENT increment ]
    [ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
    [ START start ] [ CACHE cache ] [ CYCLE ]
輸入
seqname 
將要創建的序列號名. 
increment 
INCREMENT increment 子句是可選的.一個正數將生成一個遞增的序列,一個負數將生成一個遞減的序列.缺省值是一(1). 
minvalue 
可選的子句 MINVALUE minvalue 決定一個序列可生成的最小值.缺省分別是遞增序列為1遞減為-2147483647. 
maxvalue 
使用可選子句 MAXVALUE maxvalue 決定序列的最大值.缺省的分別是遞增為2147483647,遞減為-1. 
start 
可選的 START start 子句 使序列可以從任意位置開始.缺省初始值是遞增序列為 minvalue 遞減序列為 maxvalue?。?
cache 
CACHE cache 選項使序列號預分配并且為快速訪問存儲在內存里面.最小值(也是缺省值)是1(一次只能生成一個值, 也就是說沒有緩存). 
CYCLE 
可選的 CYCLE 關鍵字可用于使序列到達最大值(maxvalue)或最小值(minvalue)時可復位并繼續下去.如果達到極限,生成的下一個數據將分別是最小值(minvalue)或最大值(maxvalue).
輸出
CREATE 
命令成功執行的返回信息. 
ERROR: Relation 'seqname' already exists 
如果聲明的序列已經存在. 
ERROR: DefineSequence: MINVALUE (start) can't be >= MAXVALUE (max) 
如果聲明的初始值超出范圍(最大值),返回此信息. 
ERROR: DefineSequence: START value (start) can't be < MINVALUE (min) 
如果聲明的初始值超出范圍(最小值),返回此信息. 
ERROR: DefineSequence: MINVALUE (min) can't be >= MAXVALUE (max) 
如果最小值和最大值不連貫.
描述
CREATE SEQUENCE 將向當前數據庫里增加一個新的序列號生成器.包括創建和初始化一個新的名為 seqname 的單行表.生成器將為使用此命令的用戶"所有". 
在序列創建后,你可以使用函數 nextval(seqname) 從序列中獲得新的數字.函數 currval('seqname') 可用于獲取對當前會話中指定序列的上一次 nextval(seqname) 調用返回的數字.函數 setval('seqname', newvalue) 可用于設置指定的序列的當前值.下一次 nextval(seqname) 調用將返回所給的值加上序列增值. 

使用象 

SELECT * FROM sequence_name;
這樣的查詢可以獲得序列的參數.除了獲取最初的參數外,你可以用 
SELECT last_value FROM sequence_name;
獲得后端分配的最后一個值.你可以使用 
底層的鎖定用于令多個請求同時調用生成器成為可能. 

  注意 
如果用語序列對象的緩存的設置大于一,而且該對象可能被多個后端同時使用就有可能產生不可預料的結果.每個后端在訪問過序列對象并遞增序列對象的最后值后,將分配跟在序列值后面"緩存數".這樣,該后端在下面的(緩存數-1)次返回序列值時將使用預分配好的數值,而不對共享對象做任何更新.所以,已經分配但在當前會話中沒有使用的數字將會丟失.而且,盡管多個后端保證分配獨立的序列值,當考慮所有的后端時該數值卻有可能是亂序的.(例如,設置緩存數為10,后端 A 可能保留數值 1..10 并且返回 nextval=1,而后端 B 可能保留數值 11..20 并在后端A生成nextval=2之前返回 nextval=11.)因此,將緩存數設為一可以安全地假設 nextval 的數值是順序生成的;當緩存數設置大于一,我們只能假設 nextval 值都是獨立的,而不能假設它們都是純粹順序生成的.同樣,last_value 將反映由任何后端保留的最后數值,不管它是不是nextval曾返回過的. 

注意
請參考 DROP SEQUENCE 語句來刪除序列. 
每個后端使用其自身的緩存來存儲分配的數字.已分配但當前會話沒有使用的數字將丟失,導致序列里面出現"空洞". 

用法
創建一個叫 serial 的遞增序列,從101開始: 
CREATE SEQUENCE serial START 101;
從此序列中選出下一個數字 
SELECT NEXTVAL ('serial');
    
nextval
-------
    114
在一個 INSERT 中使用此序列: 
INSERT INTO distributors VALUES (NEXTVAL('serial'),'nothing');
在一個 COPY FROM 后設置序列: 
CREATE FUNCTION distributors_id_max() RETURNS INT4
    AS 'SELECT max(id) FROM distributors' 
    LANGUAGE 'sql';
BEGIN;
    COPY distributors FROM 'input_file';
    SELECT setval('serial', distributors_id_max());
END;
兼容性
SQL92
CREATE SEQUENCE 是 Postgres 語言擴展.在 SQL92 里沒有 CREATE SEQUENCE 語句.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 91精品国产777在线观看 | 久久久久久久一区二区三区 | 天堂亚洲一区 | 黄色网址在线视频 | 成人做爰高潮片免费视频韩国 | 福利在线小视频 | 一道本不卡一区 | 色综合777| javhdfreejaⅴhd| 色av综合在线 | 极色品影院 | 一级成人毛片 | 男人的天堂视频网站 | 欧美成人免费电影 | 久久久精品视 | 久久久婷婷一区二区三区不卡 | av噜噜在线 | 成熟女人特级毛片www免费 | 久久久久久久久国产 | 久久午夜神器 | 国产91九色在线播放 | 视频一区 在线 | 日本a级一区| 日本中文字幕网址 | 欧美高清第一页 | 污片视频在线观看 | 高清国产免费 | 91色成人 | 欧美黑人一级 | 中文字幕在线永久视频 | 一边吃奶一边摸下娇喘 | 国产一级一级 | 欧美一级无毛 | 久久亚洲精品久久国产一区二区 | 美国人成人在线视频 | 久久精品视频12 | 日韩免费黄色 | 免费激情网站 | 一级做a爱片久久毛片a高清 | 日本中文一级片 | 国产乱淫a∨片免费观看 |