我当前分配给的程序要求在实际处理之前将表的内容复制到备份表.
在代码审查期间,一位同事指出了这一点
INSERT INTO BACKUP_TABLE SELECT * FROM PRIMARY_TABLE
风险太大,因为表可能有不同的列和不同的列顺序.
我也受限于不创建/删除/重命名表.〜唉〜
表中的列预计会发生变化,因此简单地对列名进行硬编码并不是我正在寻找的解决方案.
我正在寻找合理的非风险方式来完成这项工作.
备份表是否存在?它是永久保存数据还是只是当前值的副本?
关于无法创建/删除/重命名/复制太糟糕了.否则,如果它是短期的,只是在出现问题时使用,那么你可以在处理开始时删除它并做类似的事情
create table backup_table as select * from primary_table;
你最好的选择可能是选择明确,如
insert into backup_table () select
from primary_table;
您可以通过从数据字典构建SQL字符串,然后立即执行来生成它.但是,如果backup_table不包含primary_table中的所有重要列,那么您仍将面临风险.
可能只是想明确它,如果backup_table不存在,或者primary_table中的任何列都不在backup_table中,则会引发重大错误.