0

我需要为 Oracle 存储过程中使用的一些中间表创建代理标识键。我发现插入到 UROWID 列中的 ROWID 效果很好,但这在旧版本的 Oracle(10g 之前)中不是正确的方法——使用 SEQUENCE.NEXTVAL 是。SEQUENCE.NEXTVAL 是一个 2 步过程,会耗尽内存/存储(全表扫描),而使用 ROWID 方式,您只需保存地址即可。(如 SQL 中的 IDENTITY)
我想使用 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 回答