Phoenix中Sequence的用法(id自增)
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;
參考: