复制 - 使用MySQL INSERT INTO粘贴行

时间:2017-02-20 06:23:36

标签: php mysql

我有一个包含许多行的表格,按字段排序' 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'字段以下列方式:

  1. 在粘贴的位置(3)中,我的行应包含值3,4,5。
  2. 该位置的所有原始行应增加3,以便原始行(seq = 3)现在应该变为(seq = 6)并且所有行在表格中向下移动3行。
  3. 这可以通过SQL查询来实现吗?

1 个答案:

答案 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>

enter image description here

  

现在插入(2,&#39; F&#39;)

enter image description here

但是,我不确定这是否是处理订单的合适方式。 但为什么要按顺序将任何数据放入表中?

PS:此代码在oracle

中进行了测试