シーケンス関数
TiDB のシーケンス関数は、 CREATE SEQUENCE
ステートメントを使用して作成されたシーケンス オブジェクトの値を返すか設定するために使用されます。
関数名 | 説明 |
---|---|
NEXTVAL() | シーケンスの次の値を返します。 |
NEXT VALUE FOR | シーケンスの次の値を返します ( NEXTVAL() のエイリアス)。 |
SETVAL() | シーケンスの現在の値を設定します。 |
LASTVAL() | 現在のセッションでシーケンスによって生成された最後の値を返します。 |
NEXTVAL()
NEXTVAL()
関数はシーケンスの次の値を返します。
例:
s1
という名前のシーケンスを作成します。
CREATE SEQUENCE s1;
s1
から次の値を取得します。
SELECT NEXTVAL(s1);
出力は次のようになります。
+-------------+
| NEXTVAL(s1) |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
NEXT VALUE FOR
NEXT VALUE FOR
関数はNEXTVAL()
の別名です。
例:
NEXTVAL()
使用してs1
から次の値を取得します。
SELECT NEXTVAL(s1);
出力は次のようになります。
+-------------+
| NEXTVAL(s1) |
+-------------+
| 2 |
+-------------+
1 row in set (0.00 sec)
NEXT VALUE FOR
使用してs1
から次の値を取得します。
SELECT NEXT VALUE FOR s1;
出力は次のようになります。
+-------------------+
| NEXT VALUE FOR s1 |
+-------------------+
| 3 |
+-------------------+
1 row in set (0.00 sec)
SETVAL()
SETVAL(n)
関数は、シーケンスの現在の値を設定します。
例:
s1
から次の値を取得します。
SELECT NEXTVAL(s1);
出力は次のようになります。
+-------------+
| NEXTVAL(s1) |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)
現在の値s1
を10
に設定します。
SELECT SETVAL(s1, 10);
出力は次のようになります。
+----------------+
| SETVAL(s1, 10) |
+----------------+
| 10 |
+----------------+
1 row in set (0.00 sec)
10
に設定した後、次の値を確認します。
SELECT NEXTVAL(s1);
出力は次のようになります。
+-------------+
| NEXTVAL(s1) |
+-------------+
| 11 |
+-------------+
1 row in set (0.00 sec)
LASTVAL()
LASTVAL()
関数は、現在のセッションでシーケンスによって生成された最後の値を返します。
例:
現在のセッションでs1
によって生成された最後の値を取得します。
SELECT LASTVAL(s1);
出力は次のようになります。
+-------------+
| LASTVAL(s1) |
+-------------+
| 11 |
+-------------+
1 row in set (0.00 sec)
MySQL 互換性
MySQL は、 ISO/IEC 9075-2で定義されているシーケンスを作成および操作するための関数とステートメントをサポートしていません。