архивирование записей таблицы в другую таблицу с помощью триггера (переместить записи таблицы daialy в недельную таблицу, каждый день) - PullRequest
1 голос
/ 26 мая 2010

Я написал этот триггер в MySQL 5:

create trigger changeToWeeklly after insert on tbl_daily for each row  

начать
вставить в tbl_weeklly SELECT * ИЗ транспортных средств расположение v
где v.recivedate удалить FROM tbl_daily, где recivedate конец;

Я хочу заархивировать записи по дате, переместить вставленную вчера запись из ежедневной таблицы в последнюю и последнюю еженедельную таблицу в таблицу месяца и удалить эти записи из предыдущей таблицы. этот триггер имеет следующую ошибку при вставке в ежедневную таблицу: "Невозможно обновить таблицу 'tbl_daily' в сохраненной функции / триггере, потому что она уже используется оператором, который вызвал эту сохраненную функцию / триггер."

, пожалуйста, помогите мне решить проблему архивирования старых данных в связанных таблицах:

переместите вставленные вчера записи в еженедельную таблицу, если есть надежное решение, скажите, пожалуйста.

1 Ответ

1 голос
/ 15 июля 2010

Вы не можете удалить строки из таблицы из триггера вставки той же таблицы. В любом случае я бы предположил, что очень выгодно сводить обработку к триггерам к минимуму.

Лично у меня был бы только один триггер вставки в таблице размещения транспортных средств, единственной задачей которого было бы копирование каждой вставленной строки в таблицу архива tbl_daily. Затем у меня будет отдельный SQL-запрос, который по расписанию будет запускаться автоматически только один раз в конце каждого дня для выполнения необходимой обработки ваших архивных данных: - т.е. в конце месяца очищайте старые месячные данные, в конце недели перемещайте все строки с еженедельного на ежемесячный, а в конце каждого дня перемещайте все строки с ежедневного на еженедельный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...