Oracle シーケンス SEQUENCE 分析
この記事では、Oracle に関する知識を提供し、Oracle のシーケンス SEQUENCE についてサンプルコードを交えて詳しく紹介します。皆さんの勉強や仕事の参考になると思いますので、お役に立てれば幸いです。
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
1. シーケンスの紹介
Oracle のシーケンスは Aデータベース オブジェクト。その主な機能は一意の値を生成することです。シーケンスの作成後、データ ディクショナリを通じてシーケンス オブジェクトを見つけることができるため、シーケンスを複数のオブジェクトで共有できます。
2. シーケンスの作成
シーケンスは CREATE SEQUENCE 構文を使用して作成されます:
CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
- NCREMENT BY: シーケンスのステップ サイズを定義するために使用されます。省略した場合、デフォルトは 1 です。負の値の場合は、シーケンスの値が減少していることを意味します。
- START WITH: シーケンスの初期値 (つまり、最初に生成される値) を定義します。デフォルトは 1 です。
- MAXVALUE: シーケンスが生成できる最大値を定義します。 NOMAXVALUE はデフォルトのオプションで、最大値がないことを意味します。この時点で、増加シーケンスの場合、システムが生成できる最大値は 10 の 27 乗で、減少シーケンスの場合、最大値は -1 です。
- MINVALUE: シーケンスが生成できる最小値を定義します。 NOMINVALUE はデフォルトのオプションで、最小値がないことを意味します。この時点で、降順シーケンスの場合、システムが生成できる最小値は、マイナス 10 の 26 乗であり、降順シーケンスの場合、最小値は 1 です。
- CYCLE および NOCYCLE: シーケンス ジェネレータの値が制限に達したときにループするかどうかを示します。ループの場合、増加シーケンスの場合は最大値に達すると最小値にループし、降順シーケンスの場合は最小値に達すると最大値にループします。ループしない場合、制限値に達した後、新しい値を生成し続けるとエラーが発生します。
- CACHE: シーケンスを保存するメモリ ブロックのサイズを定義します。デフォルトは 20 です。 NOCACHE は、シーケンスのメモリ バッファリングがないことを意味します。シーケンスのメモリ バッファリングにより、シーケンスのパフォーマンスが向上します。
例:
CREATE SEQUENCE invoice_seq INCREMENT BY 1 START WITH 1 MAXVALUE 9999999 NOCYCLE NOCACHE;
3. クエリ シーケンス
シーケンスが作成されると、シーケンス作成コードはデータ ディクショナリ内でテキスト化され、次の場所にあります。 user_objects データ 次のように辞書で参照します。
SELECT object_name,object_id,object_type FROM user_objects WHERE object_name = 'INVOICE_SEQ';
シーケンスの詳細は user_sequences テーブルに保存されます。
SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences;
4. シーケンス
NEXTVAL および CURRVAL を使用します。疑似列
- NEXTVAL: 次に利用可能なシーケンス値を返します。毎回一意の参照値を返します。これは実際にはさまざまなユーザーに当てはまります。 sequence.NEXTVAL を使用すると、新しいシーケンス番号が生成され、現在のシーケンス番号が CURRVAL に入れられます。
- CURRVAL: 現在のシーケンス値を取得します。 NEXTVAL を初めて使用する前に CURRVAL を使用すると、エラーが報告されます。
は次のように使用されます:
SELECT invoice_seq.CURRVAL,invoice_seq.NEXTVAL FROM DUAL; INSERT INTO invoice (invoice_id, vendor_id, invoice_number, invoice_total ) VALUES (invoice_seq.NEXTVAL, 10, 'INV' || invoice_seq.CURRVAL, 100 );
NEXTVAL と CURRVAL は次のコンテキストで使用できます:
- は一部ではありませんサブクエリの SELECT ステートメントのフィールド リスト。
- INSERT ステートメント内のサブクエリの SELECT リスト。 INSERT ステートメントの
- VALUES 句。 UPDATE ステートメント内の
- SET 句。
NEXTVAL と CURRVAL は、次のコンテキストでは使用できません:
- ビューの SELECT リスト。
- DISTINCT を指定した SELECT ステートメント。
- GROUP BY、HAVING、または ORDER BY 句を含む SELECT ステートメント。
- SELECT、DELETE、または UPDATE ステートメント内の句。
- CREATE TABLE または ALTER TABLE ステートメントの DEFAULT 式。
ROLLBACK はシーケンス値をロールバックしないことにも注意してください。
5. シーケンスを変更します
例:
ALTER SEQUENCE invoice_seq INCREMENT BY 2 MAXVALUE 10 NOCACHE NOCYCLE;
シーケンスを変更する場合、次の制限があります:
- テーブル シーケンス初期値では起動できません。
- 最小値は現在の値より大きくすることはできません。
- 最大値を現在の値より小さくすることはできません。
- 変更されたシーケンス ルールは以前のシーケンス値には影響せず、将来のシーケンス値のみが影響を受けます。
- ユーザーは ALTER SEQUENCE 権限を持っている必要があります。
6. シーケンスの削除
DROP SEQUENCE invoice_seq;
7. 自動インクリメント シーケンスの作成
1. シーケンスの作成
create sequence sq_recid minvalue 1 maxvalue 999999 increment by 1 start with 1 noCYCLE;
2. トリガーの作成
create or replace trigger trg_test before insert on test for each row begin select sq_recid.nextval into :new.ID from dual; end; alter trigger trg_test enable;
3. C# では、シーケンスをテーブルに手動で挿入することもできます
string sql="insert into test(ID,otherCol)value (Sql_recid.nextval,***) retuing ID into :ID"
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
以上がOracle シーケンス SEQUENCE 分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

Oracle View暗号化により、ビュー内のデータを暗号化でき、それにより機密情報のセキュリティが強化されます。手順には以下が含まれます。1)マスター暗号化キー(MEK)の作成。 2)暗号化されたビューを作成し、暗号化されるビューとMEKを指定します。 3)暗号化されたビューにアクセスすることをユーザーに許可します。暗号化されたビューがどのように機能するか:ユーザーが暗号化されたビューを求めてクエリをするとき、OracleはMEKを使用してデータを復号化し、認定ユーザーのみが読み取り可能なデータにアクセスできるようにします。

Oracleでインスタンス名を表示するには3つの方法があります。「sqlplus」と「v $ instanceからselect instance_name;」を使用します。」コマンドラインのコマンド。 「show instance_name;」を使用しますSQL*Plusのコマンド。オペレーティングシステムのタスクマネージャー、Oracle Enterprise Manager、またはオペレーティングシステムを介して、環境変数(LinuxのOracle_Sid)を確認してください。

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。

データインポート方法:1。SQLLOADERユーティリティを使用します。データファイルを準備し、制御ファイルを作成し、SQLLoaderを実行します。 2。IMP/EXPツールを使用します。データをエクスポートし、データをインポートします。ヒント:1。ビッグデータセットに推奨されるSQL*ローダー。 2。ターゲットテーブルが存在する必要があり、列定義が一致します。 3。インポート後、データの整合性を検証する必要があります。

Oracleで時間を取得するには、次の方法があります。Current_Timestamp:現在のシステム時間を秒に正確に返します。 systimestamp:current_timestampよりも正確で、ナノ秒。 sysdate:時間部分を除く現在のシステム日付を返します。 to_char(sysdate、 'yyy-mm-dd hh24:mi:ss'):現在のシステムの日付と時刻を特定の形式に変換します。抽出:1年、月、時間など、時間の値から特定の部分を抽出します。

Oracleでユーザーを作成するには、次の手順に従ってください。Createユーザーステートメントを使用して新しいユーザーを作成します。助成金ステートメントを使用して必要な権限を付与します。オプション:リソースステートメントを使用してクォータを設定します。デフォルトの役割や一時テーブルスペースなど、他のオプションを構成します。

SQLステートメントは、Oracleの動的SQLを使用して、ランタイム入力に基づいて作成および実行できます。手順には、次のものが含まれます。動的に生成されたSQLステートメントを保存するための空の文字列変数を準備します。 executeを即座に使用するか、ステートメントを準備して、動的なSQLステートメントをコンパイルおよび実行します。バインド変数を使用して、ユーザー入力またはその他の動的値を動的SQLに渡します。実行するか、実行するか、動的SQLステートメントを実行します。
