Oracle UROWID или ПОСЛЕДОВАТЕЛЬНОСТЬ - PullRequest
0 голосов
/ 09 августа 2011

Мне нужно создать суррогатный ключ идентификации для некоторых промежуточных таблиц, используемых в хранимой процедуре в Oracle.Я обнаружил, что ROWID, вставленный в столбец UROWID, работает хорошо, но это не правильный путь в более старых версиях Oracle (до 10g) - использование SEQUENCE.NEXTVAL.SEQUENCE.NEXTVAL - это двухэтапный процесс, который использует память / память (полное сканирование таблицы), тогда как с помощью ROWID вы просто сохраняете адрес, и все готово.(как IDENTITY в SQL)
Я хочу использовать ROWID в качестве ключа идентификации.Это нормально для меня?

1 Ответ

0 голосов
/ 09 августа 2011

Просто чтобы быть на стороне сохранения, профессионалы используют последовательности:

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.

...