我正在运行看起来像这样的查询:
INSERT INTO foo (...) VALUES (...) RETURNING ROWID INTO :bind_var
SELECT ... FROM foo WHERE ROWID = :bind_var
本质上,我插入一行并获取它的 ROWID,然后对该 ROWID 进行选择以从该记录中取回数据。不过,偶尔会找不到 ROWID。
忽略可能有更好的方法来做我想做的事情这一事实,假设没有其他人使用数据库,ROWID 是否有可能快速更改?
更新 涉及到一个触发器。这是它的 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 字段。这个触发器有问题吗?