在Oracle中插入没有自动递增主键的值

时间:2018-08-01 13:19:19

标签: oracle insert primary-key auto-increment manual

我有一个有id列但没有主键的表,它们都是手动添加的id,所以我想做的就是在该表中插入一些值,但它需要id。如何在添加id列特定值的同时插入?

2 个答案:

答案 0 :(得分:0)

CREATE SEQUENCE seq$table1
START WITH 10
INCREMENT BY 1
NOCACHE
NOCYCLE;

CREATE OR REPLACE TRIGGER trg$table1
BEFORE INSERT
ON table1
FOR EACH ROW   
REFERENCING NEW AS N OLD AS O
BEGIN
  select seq$table1.nextVal
  into :n.id
  from dual;
END;
/

update table1
set id = seq$table1.nextVal;
commit;

答案 1 :(得分:0)

我可以建议一种方法,您可以在Google很少帮助下自己编写代码,或者让我知道您是否需要代码将编辑答案: 1.创建一个序列。 2.编写一个用于插入的过程,该过程将检查表中是否存在由序列生成的ID。使用循环检查id是否存在,然后调用sequence.next直到获得表中不存在的id。

注意:您还可以使用触发器,但这会导致表突变,因此,如果可以处理该错误,您将拥有完美的解决方案。

让我知道您是否需要上述步骤的代码,但我建议您先尝试。 谢谢