MySQL automatyczne przenoszenie wydarzeń do archiwum

0

cześć,
mam prostą tabelę events, w której znajdują się informacje o nazwie wydarzenia, miejscu, dacie itd oraz drugą tabelę archive do której chciałbym automatycznie przenosić wydarzenia, które już minęły

chodzi mi by była sprawdzana obecna data i daty z tabeli events i jeśli ta data minęła to automatycznie były przenoszone do archiwum, tylko mógłby ktoś mi pokazać w jaki sposób to mogę rozwiązać?

z góry wielkie dzięki za pomoc

0
  1. piszesz procedurę, która sprawdzi co już minęło i przeniesie to do tabeli archive
  2. dodajesz do crontaba na linuxie albo do windows task schedulera na windowsie zadanie odpalania tej procedury co jakiś czas
0

Już od 2011 roku w MySQL jest coś takiego jak Event Scheduler: https://dev.mysql.com/doc/refman/5.7/en/event-scheduler.html

Przykład jak ustawić taki event w bazie:

mysql> DELIMITER $$
mysql> CREATE EVENT backup_tab ON SCHEDULE EVERY 1 DAY STARTS '2017-02-24 00:00:01'
DO BEGIN
DROP TABLE IF EXISTS tab1_backup;
CREATE TABLE IF NOT EXISTS tab1_backup LIKE tab1;
INSERT INTO tab1_backup SELECT * FROM tab1;
END
$$
Query OK, 0 rows affected (0,01 sec)

mysql> DELIMITER ;
1

Zastanowiłbym się w ogóle czy jest to mechanizm, który na pewno powinien zostać zaimplementowany w warstwie bazy danych. Być może byłoby lepiej, gdyby było to zadanie uruchamiane np. cronem, ale zaimplementowane w aplikacji, która z tej bazy korzysta.

Z mojego doświadczenia wynika, że implementowanie logiki w bazie nie jest dobre - utrzymanie takiego kodu z czasem staje się coraz droższe.

[Adam]

1 użytkowników online, w tym zalogowanych: 0, gości: 1