スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
FOR PUBLIC USAGEを指定して定義した順序数生成子には,すべてのユーザがアクセスできます。それ以外の順序数生成子には,所有者だけがアクセスできます。
NEXT VALUE式::= NEXT VALUE FOR 〔認可識別子.〕順序数生成子識別子
|
- 認可識別子
順序数生成子の所有者の認可識別子を指定します。
- 順序数生成子識別子
使用する順序数生成子の識別子を指定します。
- NEXT VALUE式の結果のデータ型は,指定した順序数生成子が生成する値のデータ型になります。
- 次の箇所には,副問合せを指定しないでNEXT VALUE式を指定できます。
- INSERT文の問合せ指定の選択式
- INSERT文の挿入値
- UPDATE文の更新値
ただし,次に示す箇所には指定できません。
- CASE式
- スカラ関数VALUE中
- GROUP BY句,HAVING句,又は集合関数を指定した問合せ指定
- WINDOW関数を指定した問合せ指定
- DISTINCTを含む問合せ指定
- UNION ALL以外の集合演算の演算項となる問合せ指定
- NEXT VALUE式の結果は非ナル値制約なし(ナル値を許す)となります。
- 順序数生成子を定義した後で,最初にNEXT VALUE式を実行した場合は開始値が返却されます。
- 挿入値に指定された場合,INSERT文で挿入される1行ごとに,指定された順序数生成子が生成した値が挿入値となります。
- 更新値に指定された場合,UPDATE文で更新される1行ごとに,指定された順序数生成子が生成した値が更新値となります。
- 同一の行に対して同じ順序数生成子に対するNEXT VALUE式を複数指定した場合,それらのNEXT VALUE式はすべて同じ値を返却します。
- ロールバックが発生してトランザクションが無効となった場合でも,順序数生成子の値は元に戻りません。
- NEXT VALUE式を指定したSQLの実行結果がエラーとなった場合でも,順序数生成子の値が更新されていることがあります。
- 商品ID(SID),商品名(SNAME),単価(TANKA)を持つ在庫表(ZAIKO)を定義します。
CREATE TABLE ZAIKO(
SID INTEGER,
SNAME NCHAR(8),
TANKA INTEGER)
- 商品IDを1000から9999まで発番する順序数生成子SEQ1を定義します。
CREATE SEQUENCE SEQ1
START WITH 1000
INCREMENT BY 1
MAXVALUE 9999
NO CYCLE
- 在庫表(ZAIKO)に新たな商品を登録します。
INSERT INTO ZAIKO VALUES(NEXT VALUE FOR SEQ1, N'ズボン', 1200)
INSERT INTO ZAIKO VALUES(NEXT VALUE FOR SEQ1, N'シャツ', 1000)
INSERT INTO ZAIKO VALUES(NEXT VALUE FOR SEQ1, N'セーター', 1500)
実行結果
- 在庫表(ZAIKO)の商品ID(SID)が"1001"の商品IDを新しい商品IDに更新します。
UPDATE ZAIKO SET SID = NEXT VALUE FOR SEQ1 WHERE SID = 1001
実行結果
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.