Я создаю хранимую процедуру MySQL, которая удаляет / создает таблицу backup
и вставляет значения из таблицы actual
.Эта таблица backup
имеет ту же структуру таблицы, что и таблица actual
.
Однако я хочу, чтобы эта таблица backup
была удалена и создана только в том случае, если количество записей из таблицы actual
>таблица backup
.
Каждое утро в таблицу actual
загружаются данные через ETL.В этой таблице хранятся исторические записи, поэтому я хочу создать резервную копию.
Приведенный ниже код прекрасно работает, когда количество записей в таблице actual
>> 1016 *.
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
таблица.
Я застрял на том, как подойти к этому.