Как ежедневно копировать и очищать таблицу MySQL?

0

У меня есть таблица с именем chat. Я хочу скопировать содержимое в chat_archive и очистить содержимое чата каждый день. Сообщения чата будут по-прежнему входить в чат во время копирования. Как я могу выполнить это без каких-либо постоянных операций в таблице чата?

  • 1
    Любое решение приведет к очереди входящих транзакций. Хитрость заключается в том, чтобы минимизировать это количество времени.
  • 1
    лучшим способом может быть добавление строк чата в chat_archive с помощью триггера. триггер должен только добавить небольшие накладные расходы в базу данных, а затем вы можете усекать таблицу ежедневно.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Скопируйте чат и удалите его в транзакции, чтобы вы не потеряли ничего между этими двумя шагами.

BEGIN TRANSACTION;
INSERT INTO chat_archive 
    SELECT * FROM chat;
DELETE FROM chat;
COMMIT;

Если у вас есть идентификатор автоинкремента, убедитесь, что вы используете, используйте DELETE FROM chat; вместо TRUNCATE chat; , так как последний сбросит автоинкремент на 0. TRUNCATE также автоматически фиксирует транзакцию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню