在预言机中使用 max(列) + 1 作为 primark 键批量插入会产生重复异常错误



>我试图在oracle数据库中进行批量插入。查询为:

INSERT INTO <table-name> (A, B) values ((SELECT MAX(A)+ 1 FROM <>table-name), "xyz")

批处理插入中有两个类似的语句。上面的操作抛出了重复异常。

你实际上应该使用序列或计算(生成)列来计算 A - 尽管 Oracle 历来使这比它应该的更困难。

但是,如果您的问题是 A ,那么问题可能是A总是NULL 。 㞖:

INSERT INTO <table-name> (A, B) 
     SELECT COALESCE(MAX(A), 0) + 1, 'xyz'
     FROM <table-name>;

您可能还对B或未包含在insert中的其他列具有唯一的索引/约束。 而且,为了完整起见,我应该提到错误可能来自表上的插入触发器。

相关内容

  • 没有找到相关文章

最新更新