オラクルにおけるNEXTVALの事例を解説
シーケンスとは何か、その役割とは?
Oracleデータベースにおけるシーケンスとは何ですか?また、その役割は何でしょうか?実は、シーケンスとは、テーブルの行に対してシーケンス番号を自動的に生成し、等間隔に並んだ値(数値型)の集合を生成するシーケンス番号生成器のことです。主な用途は、insert文の中で参照できるテーブルの主キー値を生成し、insert前にシーケンス番号のnextval値を取得し、insertすることです。また、クエリで現在値を確認したり、次の値までシーケンスを増加させるような使い方もできる。
2. シーケンスを定義するには?
create sequence INR_REQUIRMENT_SQUENCE
INCREMENT BY 1 -- add a few at a time
START WITH 1 -- start counting from 1
NOMAXVALUE -- do not set maximum value
NOCYCLE -- keep adding up, no loop
CACHE 10;
上記の文は、シーケンスを作成する?
3. シーケンスの値はどのように取得するのですか?
SELECT INR_REQUIRMENT_SQUENCE.CURRVAL FROM dual -- 現在のシーケンスの値を取得します。最初のNEXTVALは初期値を返し、その後のNEXTVALは自動的に定義した INCREMENT BY 値を増分して、増分した値を返します。常に現在のシーケンスの値を返しますが、最初のNEXTVALの初期化後までCURRVALを使用すべきではありません、さもなければエラーが発生します。1つのNEXTVALは1度だけシーケンスの値をインクリメントするので、同じ文の中で複数のNEXTVALを使用すると
4. Sequenceはどこで使えるの?
- サブクエリ、スナップショット、VIEWを含まないSELECT文
- サブクエリ内のINSERT文
- NSERT文のVALUESの中
- UPDATEのSET内
実用的な開発では、例えば、あるテーブルの主キーが最初に主キーIDを取得する必要がある場合、NEXTVALを使って次のフェッチシーケンス値を取得し、それから他の操作を行うことができます。
5. シーケンスの削除方法は?
DROP sequence policy_id_seq; --policy_id_seq は、シーケンスの名前です。シーケンス内の初期値を変更したい場合は、まずシーケンス番号を削除してから作成する必要があります。シーケンスの所有者であるか、ALTER ANYシーケンス権限を持っていれば、シーケンスを変更し、Alter文を使って直接更新することができます。
OracleのNEXTVALについては、この記事がすべてです。OracleのNEXTVALについては、BinaryDevelopの過去記事を検索していただくか、引き続き以下の関連記事をご覧ください。
関連
-
Oracle12Cのデフォルトのユーザー名とシステムパスワードが正しくない場合の解決策
-
Oracle ADGプロセスを構築するDBCAコマンドライン
-
Oracle 11g R2 インストールチュートリアル フルバージョン
-
Oracleトレースファイルの詳細な使用方法
-
[解決済み] ORA-00900: 無効な SQL 文 - Oracle 10g のプロシージャを実行するとき
-
[解決済み] ORA-00955 "名前はすでに既存のオブジェクトによって使用されています"
-
[解決済み] ORA-01849: 時間は 1 から 12 の間でなければなりません。
-
[解決済み] ORA-04021: オブジェクトのロック待ちでタイムアウトが発生しました。
-
[解決済み] ORA-29283: 無効なファイル操作 ORA-06512: "SYS.UTL_FILE", 行 536 で。
-
[解決済み] SQLステート [72000]; エラーコード [14300]; JDBCバッチアップデートを実行できませんでした。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Oracleにリモート接続するためのPLSQLDeveloperログイン
-
Navicat PremiumツールでOracleデータベースをMySQLに移行する
-
オラクル・ラックのケーススタディ
-
Oracle PL/SQLを使用して電子メール機能(UTL_MAIL)を実装する方法
-
Oracleのカンマ区切り文字列を複数行に分割したデータ例
-
Oracle TriggersとCursorsを高速に学ぶ
-
[解決済み】ORA-30926:ソーステーブルの安定した行のセットを取得できません。
-
C#からORACLEへの接続が乱れたコードの問題解決法
-
[解決済み] ORA-00119: 無効な仕様 ORA-00132: 構文エラー
-
[解決済み] ORA-4031 "unable to allocate x bytes of shared memory" を解決する。