如何跟踪用于恢复的备份表?

问题描述 投票:0回答:1

在我的项目中,对于特定操作,我正在创建该操作正在使用的 1 个表的备份。所以每次都会创建一个新的备份表。为了恢复,我必须从最终用户选择的备份表之一进行恢复。

所以我的问题是如何创建备份表?或者跟踪备份表?

限制是备份在任何恢复或检查表是否存在之前我必须知道。因此,如果我生成带有基于时间的后缀的名称,那么我将无法正确找到该名称。

database-design
1个回答
0
投票

不要有多张桌子;有一张桌子。

如果您有桌子:

CREATE TABLE main (
  a INT,
  b DATE,
  c VARCHAR(50)
);

并且您想在特定日期为特定用户创建备份:

CREATE TABLE main__backup(
  username    VARCHAR(50),
  backup_date TIMESTAMP,
  a INT,
  b DATE,
  c VARCHAR(50)
);

然后如果你想“备份”刚刚复制主表的表:

INSERT INTO main_backup (username, backup_date, a, b, c)
SELECT current_user, current_timestamp, a, b, c FROM main;

如果要“恢复”表只需删除主表并复制备份表即可。例如,要恢复到 5 分钟前保存的内容:

DELETE FROM main;

INSERT INTO main (a, b, c)
SELECT a, b, c
FROM   main_backup
WHERE  username    = current_user
AND    backup_date = current_timestamp - INTERVAL '5' MINUTE;
© www.soinside.com 2019 - 2024. All rights reserved.