1. 程式人生 > 實用技巧 >Phoenix中Sequence的用法(id自增)

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;

參考:

https://www.cnblogs.com/MOBIN/p/5233948.html