我有一个有id列但没有主键的表,它们都是手动添加的id,所以我想做的就是在该表中插入一些值,但它需要id。如何在添加id列特定值的同时插入?
答案 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。
注意:您还可以使用触发器,但这会导致表突变,因此,如果可以处理该错误,您将拥有完美的解决方案。
让我知道您是否需要上述步骤的代码,但我建议您先尝试。 谢谢