我正在创建一个MySQL存储过程,该存储过程将删除/创建一个backup
表,并插入actual
表中的值。该backup
表具有与actual
表完全相同的表结构。
但是,如果来自backup
表> actual
表的记录数,我只希望删除并创建此backup
表。
每天早上,actual
表都会通过ETL加载数据。该表存储历史记录,因此为什么要创建备份。
下面的代码适用于actual
表> backup
表的记录计数。
CREATE DEFINER=name PROCEDURE Create Backup Table()<br/>
BEGIN
DROP TABLE IF EXISTS BackupTable;
CREATE TABLE BackupTable(
column1, datatype
column2, datatype
etc.
);
INSERT INTO BackupTable
SELECT * FROM ActualTable
WHERE (SELECT COUNT(*) FROM ActualTable) > (SELECT COUNT(*) FROM BackupTable)
END
但是,如果在actual
表的加载导致部分数据发生的情况下,backup
表将被清除干净-因为在这种情况下, backup
表> actual
表。
我一直坚持如何解决这个问题。