Oracle 甲骨文合并(upsert);即使找到匹配项,SEQ val也会异常增加

Oracle 甲骨文合并(upsert);即使找到匹配项,SEQ val也会异常增加,oracle,merge,upsert,Oracle,Merge,Upsert,我正在使用OracleMerge进行升级。它看起来工作得很好,直到我注意到我的SEQ总是增加1,即使匹配时满足等式的。我知道之所以调用等式的update端,是因为状态正在根据需要更新(名称是主键,因此不可能仅通过重新插入行来实现)。我已经在下面介绍了我的程序。知道为什么会这样吗 CREATE OR REPLACE PROCEDURE ff_update(argname VARCHAR, argstate VARCHAR

我正在使用OracleMerge进行升级。它看起来工作得很好,直到我注意到我的SEQ总是增加1,即使匹配时满足等式的。我知道之所以调用等式的update端,是因为状态正在根据需要更新(名称是主键,因此不可能仅通过重新插入行来实现)。我已经在下面介绍了我的程序。知道为什么会这样吗

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”

谢谢,我可以承受序列中的间隙,因此我可以继续使用此方法