我有一个包含许多行的表格,按字段排序' seq'。 我选择了第6-9行,我想将它们复制并粘贴到第3行。 为此,我想创建一个执行以下操作的SQL查询:
INSERT INTO my_table ( seq, field1, field2.... )
SELECT seq, field1,field2..
FROM my_table
WHERE id IN ( 234, 233,232 )
(id字段是标识我选定行的自动增量字段)。
现在 - 我设法将行复制到表中。 缺少的是正确更新' seq'字段以下列方式:
这可以通过SQL查询来实现吗?
答案 0 :(得分:0)
您可以创建一个检查seq的触发器,如果序列存在,它将更新它上面的序列号并且将会。
create table s_sequence
(seq number(3),
name varchar2(2000)
);
create or replace trigger s_seq_order
before insert on s_sequence
for each row
declare
seq_exists varchar2(20);
begin
begin
select 1 into seq_exists from s_sequence where seq = :new.seq;
exception
when NO_DATA_FOUND then
null;
end;
if seq_exists = '1' then
update s_sequence set seq = seq + 1 where seq >= :new.seq;
end if;
end;
插入(seq,name)(1,&#39; A&#39;),(2,&#39; B&#39;)..(5,&#39; E&#39;)< / p>
现在插入(2,&#39; F&#39;)
但是,我不确定这是否是处理订单的合适方式。 但为什么要按顺序将任何数据放入表中?
PS:此代码在oracle
。