このトピックでは、NEXTVAL演算子とCURRVAL演算子を使用してシーケンスから値を取得する方法について説明します。
シーケンス内の次の値を取得する
構文[<schema_name>.]<sequence_name>.NEXTVALデータの挿入に使用されるINSERTステートメントの値として、seq1.nextvalを指定できます。 クエリ操作は、実行のためにデータノード層にプッシュダウンされます。
- 方法1: SELECTステートメントを使用する
SELECT seq1.nextval;サンプル結果:
+--------------+ | seq1.NEXTVAL | +--------------+ | 2 | +--------------+ - 方法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は自動的にシーケンス内の値を保持し、
INSERTステートメントにシーケンス値を挿入します。
シーケンス内の値の次のバッチを取得する
構文SELECT [<schema_name>.]<sequence_name>.NEXTVAL [ FROM DUAL ] WHERE COUNT = <数値> 例次のステートメントを実行すると、一度にシーケンスから10個の値を取得できます。
SELECT seq1.nextval FROM DUAL WHERE COUNT = 10;サンプル結果:
+ -------------
| seq1.NEXTVAL |
+ -------------
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
+ ------------- シーケンスで現在の値を取得する
説明 CURRVAL演算子は、PolarDB-X V5.4.14以降のバージョンでのみサポートされます。
[<schema_name>.]<sequence_name>.CURRVAL説明 CURRVAL演算子を使用すると、現在のセッションのシーケンスから現在の値のみを取得できます。
次のステートメントを実行して、現在のセッションのシーケンスから現在の値を取得できます。
SELECT seq1.currval;サンプル結果:
+ -------------
| seq1.CURRVAL |
+ -------------
| 12 |
+ -------------