sql - 使用额外的列将记录从一个 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?一旦从原始表中复制了一条记录,它将从原始表中删除。
解决方案
ARCHIVEDATE 是一个日期字段,所以它应该默认为 SYSDATE,而不是 CURRENT_TIMESTAMP。这消除了每个插入的转换。
正如其他人所说,只需列出列:
insert into archivetable (custkey, cola, colb, colc)
select custkey, cola, colb, colc
from originaltable
where custkey = passedparam;
无需包含 NEWKEY 或 ARCHIVEDATE,因为它们将在插入时被初始化。
推荐阅读
- excel - 在 INDIRECT 函数中使用字符串来操作单元格地址
- data-science - 关于“类状态”和时间序列数据的特征工程
- sql - 使用 datediff 获取正确的小时值
- amazon-web-services - 在 Amazon s3 中更新第一行大型 CSV 文件的最佳方法
- typescript - 对象可能为“null”,类型为“as HTMLInputElement”,但不是“any”
- wordpress - 添加菜单回调函数在 wordpress mvc 中不起作用?为什么?
- python - Python中的复利计算器
- r - ggplot中的速度图
- c - 如果字符串包含所有数字,则 C 代码输出 yes,如果它包含除数字以外的其他内容,则输出 no
- android - RecyclerView - 自定义 DefaultItemAnimator 问题