本文主要介绍如何获取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 |
+--------------+