目次
1. シーケンスの紹介
2. シーケンスの作成
3. クエリ シーケンス
4. シーケンス
NEXTVAL および CURRVAL を使用します。疑似列
5. シーケンスを変更します
6. シーケンスの削除
7. 自動インクリメント シーケンスの作成
ホームページ データベース Oracle Oracle シーケンス SEQUENCE 分析

Oracle シーケンス SEQUENCE 分析

Jul 28, 2022 pm 03:49 PM
oracle

この記事では、Oracle に関する知識を提供し、Oracle のシーケンス SEQUENCE についてサンプルコードを交えて詳しく紹介します。皆さんの勉強や仕事の参考になると思いますので、お役に立てれば幸いです。

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Oracleの表空間サイズを確認する方法 Oracleの表空間サイズを確認する方法 Apr 11, 2025 pm 08:15 PM

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ビューを暗号化する方法 Oracleビューを暗号化する方法 Apr 11, 2025 pm 08:30 PM

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

Oracleのインスタンス名を表示する方法 Oracleのインスタンス名を表示する方法 Apr 11, 2025 pm 08:18 PM

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

Oracleのインストールをアンインストールする方法は失敗しました Oracleのインストールをアンインストールする方法は失敗しました Apr 11, 2025 pm 08:24 PM

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

Oracleデータベースをインポートする方法 Oracleデータベースをインポートする方法 Apr 11, 2025 pm 08:06 PM

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

オラクルで時間を取得する方法 オラクルで時間を取得する方法 Apr 11, 2025 pm 08:09 PM

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

Oracleのユーザーをセットアップする方法 Oracleのユーザーをセットアップする方法 Apr 11, 2025 pm 08:21 PM

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

Oracle Dynamic SQLを作成する方法 Oracle Dynamic SQLを作成する方法 Apr 12, 2025 am 06:06 AM

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

See all articles