在我的项目中,对于特定操作,我正在创建该操作正在使用的 1 个表的备份。所以每次都会创建一个新的备份表。为了恢复,我必须从最终用户选择的备份表之一进行恢复。
所以我的问题是如何创建备份表?或者跟踪备份表?
限制是备份
不要有多张桌子;有一张桌子。
如果您有桌子:
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;