この記事では、Oracle に関する知識を提供し、Oracle のシーケンス SEQUENCE についてサンプルコードを交えて詳しく紹介します。皆さんの勉強や仕事の参考になると思いますので、お役に立てれば幸いです。
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
Oracle のシーケンスは Aデータベース オブジェクト。その主な機能は一意の値を生成することです。シーケンスの作成後、データ ディクショナリを通じてシーケンス オブジェクトを見つけることができるため、シーケンスを複数のオブジェクトで共有できます。
シーケンスは CREATE SEQUENCE 構文を使用して作成されます:
CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
例:
CREATE SEQUENCE invoice_seq INCREMENT BY 1 START WITH 1 MAXVALUE 9999999 NOCYCLE NOCACHE;
シーケンスが作成されると、シーケンス作成コードはデータ ディクショナリ内でテキスト化され、次の場所にあります。 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;
は次のように使用されます:
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 は次のコンテキストで使用できます:
NEXTVAL と CURRVAL は、次のコンテキストでは使用できません:
ROLLBACK はシーケンス値をロールバックしないことにも注意してください。
例:
ALTER SEQUENCE invoice_seq INCREMENT BY 2 MAXVALUE 10 NOCACHE NOCYCLE;
シーケンスを変更する場合、次の制限があります:
DROP SEQUENCE invoice_seq;
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 サイトの他の関連記事を参照してください。