我有两张桌子:
- 表原件
- 表备份
它们具有完全相同的结构。
我想要一个可以在一天中的任何时间运行的 SQL 语句,它将所有行从 tableOriginal 复制到 tableBackup 而不会覆盖 tableBackup 中的项目。基本上,此命令必须将 tableBackup 与 tableOriginal 同步。
我怎么做?
我有两张桌子:
它们具有完全相同的结构。
我想要一个可以在一天中的任何时间运行的 SQL 语句,它将所有行从 tableOriginal 复制到 tableBackup 而不会覆盖 tableBackup 中的项目。基本上,此命令必须将 tableBackup 与 tableOriginal 同步。
我怎么做?
INSERT INTO tableBackup(SELECT * FROM tableOriginal)
只要主键被更新或替换为新的传入数据没有问题,这不会给您带来问题。但是,正如您已经知道的那样,备份表在您的命令之后将有更多数据,因为它没有删除它以前的数据
为什么不先删除tableBackup中的所有数据,然后将 tableOriginal 中的数据插入tableBackup
DELETE FROM tableBackup
INSERT INTO tableBackup(SELECT * FROM tableOriginal)
为什么我们需要先删除?因为如果我们要向 tableBackup 插入唯一的数据,下次我们插入它就不会执行,因为我们将插入/添加一些已经存在的数据..
希望你明白我想说的。