すべてのプロダクト
Search
ドキュメントセンター

PolarDB:シーケンスから値を取得する

最終更新日:Jun 05, 2024

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