Phoenix中Sequence的用法


Phoenix--HBase的JDBC驅動

序列(Sequence)是Phoenix提供的允許產生單調遞增數字的一個SQL特性,序列會自動生成順序遞增的序列號,以實現自動提供唯一的主鍵值。

 
使用CREATE SEQUENCE語句建立序列的語法如下:
create sequence <deq_name>
[start with n]
[increment by n]
[minvalue n]
[maxvalue n]
[cycle]
[cache n]
 

語法結構:

 

參數說明:
sqe_name:序列名
 
increment:可選子句,表示序列的增量,正數表示生成一個遞增的序列,負數表示生成一個遞減的序列,其默認值是1.
 
minvalue:可選子句,決定序列生成的最小值
 
maxvalue:可選子句,決定序列生成的最大值
 
start:可選子句,指定序列的開始位置,默認遞增序列的起始值為minvalue,遞減序列的起始值為maxvalue.
 
cache:可選子句,決定是否產生序列號預分配並存儲在內存中。
 
cycle:可選關鍵字,當序列達到最大值或者最小值時,可以繼續復位下去;如果是遞增系列達到maxvalue,它將又從minvalue繼續遞增,如果是遞減系列達到minvalue,它將從maxvalue繼續遞減。如果忽略該關鍵,當其他達到最大值或者最小時仍繼續遞增/減時將會返回一個錯誤。
 
例子:
創建默認序列,其增量為1
CREATE SEQUENCE my_sequence;

創建一個最小值為1,最大值為10並且能復位的序列

CREATE SEQUENCE my_cycling_sequence MINVALUE 1 MAXVALUE 100 CYCLE;

查詢當前序列號

SELECT CURRENT FOR my_sequence;

查詢當前序列的下一個序列號

SELECT NEXT VALUE FOR my_sequence;

(NEXT VALUE FOR返回當前序列的下一個序列號,CURENT VALUE FOR返回當前序列號,注意:首次引用序列時,必須是NEXT VALUE FOR

使用UPSERT SELECT語句,並為主鍵生成一個唯一的序列值

UPSERT VALUES INTO my_table(id, col1, col2)  VALUES( NEXT VALUE FOR my_schema.my_sequence, 'foo', 'bar');

通過CURRENT VALUE FOR查詢某表中某序列為該表分配的最后一個序列號

SELECT CURRENT VALUE FOR my_sequence FROM my_tale;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM