gpt4 book ai didi

sql - Oracle:在为多列表更新一个字段时复制行

转载 作者:行者123 更新时间:2023-12-04 14:21:58 25 4
gpt4 key购买 nike

有没有一种方法可以通用地复制一行,特别是在不指定所有列的情况下。

在我的情况下,我有一个大表,我想在其中复制除 ID 和另一列之外的所有列。事实上,数据是在年初逐年复制的。该表有 50 多个列,因此如果我不必指定所有列,它可以更灵活、更可靠地更改架构。

这与问题密切相关:copy row while updating one field

在那个问题中,Kevin Cline 的评论本质上是在问我的问题,但实际上没有为这种更一般的情况提供解决方案。

编辑以根据要求提供更多详细信息,这是所需内容的示例:

-- setup test table
create table my_table(pk, v1,v2,v3,v4 ... v50) as
select 17 pk, 1 v1,2 v2,3 v3... 50 v50 from dual;

在上表中复制该行并将 pk 设置为 18,将 v2 设置为 10。

最佳答案

一个简单的方法是使用匿名 PL/SQL block 和 ROWTYPE 的用法:

-- setup test table
create table my_table(pk, value) as
select 17 pk, 'abc' value from dual;

declare
l_data my_table%rowtype;
begin
-- fetch the row we want to copy
select * into l_data from my_table tbl where tbl.pk = 17;
-- update all fields that need to change
l_data.pk := 18;
-- note the lack of parens around l_data in the next line
insert into my_table values l_data;
end;

关于sql - Oracle:在为多列表更新一个字段时复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com