Oracle 甲骨文合并(upsert);即使找到匹配项,SEQ val也会异常增加
我正在使用OracleMerge进行升级。它看起来工作得很好,直到我注意到我的SEQ总是增加1,即使匹配时满足等式的。我知道之所以调用等式的update端,是因为状态正在根据需要更新(名称是主键,因此不可能仅通过重新插入行来实现)。我已经在下面介绍了我的程序。知道为什么会这样吗Oracle 甲骨文合并(upsert);即使找到匹配项,SEQ val也会异常增加,oracle,merge,upsert,Oracle,Merge,Upsert,我正在使用OracleMerge进行升级。它看起来工作得很好,直到我注意到我的SEQ总是增加1,即使匹配时满足等式的。我知道之所以调用等式的update端,是因为状态正在根据需要更新(名称是主键,因此不可能仅通过重新插入行来实现)。我已经在下面介绍了我的程序。知道为什么会这样吗 CREATE OR REPLACE PROCEDURE ff_update(argname VARCHAR, argstate VARCHAR
CREATE OR REPLACE PROCEDURE ff_update(argname VARCHAR,
argstate VARCHAR)
AS
BEGIN
MERGE INTO flags f
USING (SELECT argname name FROM dual) b ON (f.name = b.name)
WHEN MATCHED THEN
UPDATE SET f.state = argstate
WHEN NOT MATCHED THEN
INSERT (f.id, f.name, f.state, f.notes1, f.notes2)
VALUES (id_seq.nextval, argname, argstate, NULL, NULL);
END ff_update;
/
那序列呢
create sequence ID_SEQ
start with 1000000
increment by 1
nocache;
这是合并的预期行为
请参见Metalink备注:554656.1“插入和更新的合并增量序列.NEXTVAL”谢谢,我可以承受序列中的间隙,因此我可以继续使用此方法