このトピックでは、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 |
+ -------------