首页 > 解决方案 > 使用额外的列将记录从一个 Oracle SQL 表复制到另一个

问题描述

这是一个更大的 Java 程序的一部分,但我正在寻找一种在 Oracle SQL 中将记录从一个表复制到另一个表的方法。原始表为 45 列。第二个表是原始表的存档表。

编辑 - 它有相同的 45 列,但也有一个 NewKey 列 - 在存档表中创建使用

("NEWKEY" NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1)

和一个 archive_date 列

"ARCHIVEDATE" DATE DEFAULT CURRENT_TIMESTAMP

有没有办法做一个查询

INSERT INTO Archive_Table A
SELECT * (plus NEWKEY, ARCHIVEDATE) FROM Original Table O
WHERE O.CUSTKEY = passed_param;

传递的唯一参数是 CUSTKEY?一旦从原始表中复制了一条记录,它将从原始表中删除。

标签: sqloraclecopy

解决方案


ARCHIVEDATE 是一个日期字段,所以它应该默认为 SYSDATE,而不是 CURRENT_TIMESTAMP。这消除了每个插入的转换。

正如其他人所说,只需列出列:

insert into archivetable (custkey, cola, colb, colc) 
select custkey, cola, colb, colc 
  from originaltable 
 where custkey = passedparam;

无需包含 NEWKEY 或 ARCHIVEDATE,因为它们将在插入时被初始化。


推荐阅读