在我的工作中,我通常必须在更改主键的同时复制行并给它们一个新的图章,也许还需要更改外键。
问题是我不想在做的时候输入所有的列名;
insert into table_name
select pk_seq.nextval,
'foreign-key',
col3,
col4...col51
from table_name
where pk_id = "original_primary_key"
如果我在 select 语句中做 * 我将无法更新前 2 列...
有什么办法可以做我想做的事吗?
最佳答案
好吧,它可能不会那么冗长,但是这个 PL/SQL 是一个选项:
begin
for r in (select *
from table_name
where pk_id = 'original_primary_key')
loop
r.pk := pk_seq.nextval;
r.fk := 'foreign-key';
insert into table_name values r;
end loop;
end;
关于sql - 复制同一表中的一行而无需键入 50 多个列名(同时更改 2 列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780383/