本文主要介绍如何获取Sequence值。

获取下一个Sequence值

语法
[<schema_name>.]<sequence_name>.NEXTVAL

该方法是把seq1.nextval当做一个值写入INSERT语句中,再下推执行。

示例
  • 方法一,直接获取:
    SELECT seq1.nextval;

    返回结果如下:

      +--------------+
      | seq1.NEXTVAL |
      +--------------+
      |            2 |
      +--------------+
  • 方法二,嵌入到INSERT语句中获取:
    INSERT INTO some_users (name, address, gmt_create, gmt_modified, intro) VALUES ('sun', seq1.nextval, now(), now(), 'aa');
    说明

    如果建表时已经设置了自增列,则INSERT时不必再指定自增列,或为自增列指定0或null值,PolarDB-X会自动维护Sequence值并填充INSERT语句。

获取下一批Sequence值

语法
SELECT [<schema_name>.]<sequence_name>.NEXTVAL [ FROM DUAL ] WHERE COUNT = <numeric value>
示例

一次性获取10个Sequence值:

SELECT seq1.nextval FROM DUAL WHERE COUNT = 10;

返回结果如下:

+--------------+
| seq1.NEXTVAL |
+--------------+
|            3 |
|            4 |
|            5 |
|            6 |
|            7 |
|            8 |
|            9 |
|           10 |
|           11 |
|           12 |
+--------------+

获取当前Sequence值

说明 CURRVAL语法仅在5.4.14及以上版本支持。
语法
[<schema_name>.]<sequence_name>.CURRVAL
说明 CURRVAL仅获取一个Sequence在当前会话中的当前值。
示例

获取当前会话中sequence的当前值:

SELECT seq1.currval;

返回结果如下:

+--------------+
| seq1.CURRVAL |
+--------------+
|           12 |
+--------------+