Ger*_*rat 2 sql oracle sequences oracle11g
我正在尝试将多个记录插入表中,但对每个记录使用相同的序列值.
这类似于:如何使用序列值将多行插入oracle?但是给出的答案会插入多个不同的序列号,并且我希望多个recs使用相同的序列号.
create table test1 (
col_a number,
col_b number
);
commit;
create sequence test_seq increment by 1 start with 2 minvalue 1 nocycle nocache noorder;
commit;
insert into test1 (col_a, col_b)
select a.object_id, test_seq.nextval from (
select object_id from all_objects where rownum < 5
) a;
commit;
Run Code Online (Sandbox Code Playgroud)
上面的问题是它检索并插入多个(不同的)"test_seq.nextval"值,我希望为每一行插入相同的值.
这甚至可以在直接sql中使用而不诉诸触发器(或多个sql语句)?相关问题的答案之一暗示可能不是,但我不清楚.
谢谢.
如果有帮助,我正在使用Oracle 11g.
用currval而不是nextval.
select test_seq.nextval from dual;
insert into test1 (col_a, col_b)
select a.object_id, test_seq.currval from (
select object_id from all_objects where rownum < 5
) a;
Run Code Online (Sandbox Code Playgroud)
我知道没有方法可以在没有两个语句的情况下做到这一点,第一个是递增序列(因此可以通过currval使其可选),第二个使用currval.