シーケンスが使えます!シーケンスの詳細については、Oracleのドキュメントを参照してください。
シーケンスは、指定されたシーケンスで新しい番号を生成する独立したデータベースオブジェクトです。
例えば、あなたが単に言うなら
CREATE SEQUENCE tblid_seq;
tblid_seq
1から始まり、1ずつ増加する、という名前の新しいシーケンスが作成されます。
nextval
シーケンスでcurrval
メソッドを使用できます。
たとえば、を使用するtblid_seq.nextval
たびに、増分値が取得されます。を使用するtblid_seq.currval
と、によって抽出された最後の値が取得されtblid_seq.nextval
ます。
それの使い方?単純。SQLの場合:
INSERT INTO (tblid, val1) VALUES (tblid_seq.nextval, 'Some value');
PL / SQLトリガー、プロシージャ、関数、または匿名ブロックでは、以下を使用できます。
var1 := tblid_seq.nextval; -- var1 is of INTEGER data type.
シーケンスは、シーケンスで生成された値を使用しているテーブルを含め、他のデータベースオブジェクトから独立しています。シーケンスもトランザクションから独立しているため、シーケンス値をロールバックすることはできません。したがって、生成された値にギャップがあっても問題がない場合は、シーケンスを使用してください。