次のようなクエリを実行しています。
INSERT INTO foo (...) VALUES (...) RETURNING ROWID INTO :bind_var
SELECT ... FROM foo WHERE ROWID = :bind_var
基本的に、行を挿入してその ROWID を取得し、その ROWID に対して選択を行って、そのレコードからデータを取得します。ただし、ごくまれに、ROWID が見つからないことがあります。
私がやろうとしていることを行うためのより良い方法がおそらくあるという事実を無視して、データベースを使用している人が他にいないと仮定して、ROWID がすぐに変更される可能性はありますか?
UPDATE 関連するトリガーがあります。そのための DDL ステートメントは次のとおりです。
CREATE OR REPLACE TRIGGER "LOG_ELIG_DEMOGRAPHICS_TRG"
before insert on log_elig_demographics
for each row
begin
select log_elig_demographics_seq.nextval into :new.log_idn from dual;
end;
基本的に、これは IDENTITY/AUTO INCREMENT フィールドをエミュレートするのに役立つように設定された単なるトリガーです。このトリガーに何か問題がありますか?