0

Oracle のストアド プロシージャで使用されるいくつかの中間テーブルの代理 ID キーを作成する必要があります。UROWID 列に挿入された ROWID はうまく機能することがわかりましたが、これは古いバージョンの Oracle (10g より前) では正しい方法ではありません。SEQUENCE.NEXTVAL を使用するのは正しい方法です。SEQUENCE.NEXTVAL は 2 ステップのプロセスであり、メモリ/ストレージ (フル テーブル スキャン) を使い果たしますが、ROWID の方法ではアドレスを保存するだけで完了です。(SQL の IDENTITY のように)
ID キーとして ROWID を使用したい。これを行ってもよろしいですか?

4

1 に答える 1

0

念のために言うと、これはプロがシーケンスを使用する方法です。

insert into master_table(id, x, y, z) values seq_master.nextval, :x, :y, :z;

insert into detail_table(master_id, a, b) values (seq_master.currval, :a, :b);
insert into detail_table(master_id, a, b) values (seq_master.currval, :c, :d);
...

私はいつでもROWIDよりもシーケンスを好みます。

于 2011-08-08T22:10:44.133 に答える