MySQL giải pháp:
Bạn yêu cầu MySQL event
để chạy trên cơ sở thời gian.
Và tôi khuyên bạn nên viết update
các câu lệnh dựa trên tình trạng của bạn và liên kết quy trình tương tự với bộ lập lịch sự kiện mà bạn muốn chạy vào mỗi ngày bắt đầu.
Bạn có thể thực hiện như sau:.
Ví dụ :
delimiter //
drop event if exists event_scheduling_sample;
create event if not exists event_scheduling_sample
-- on schedule every 86400 second starts 00:00:00
-- at timestamp( adddate( current_date, 1 ),'00:00:00' )
-- on schedule every 1 day
-- starts current_timestamp
-- ends current_timestamp + interval '5' day
-- on schedule every 1 day
-- starts current_timestamp
-- ends timestamp( current_date,'23:59:59' )
on schedule every 1 day
starts timestamp( current_date + 1, '00:00:00' )
comment 'event scheduling sample'
do
call db_name.procedure_name_that_updates_the_user_records();
;
//
delimiter ;
Tham khảo : MySQL:TẠO Cú pháp SỰ KIỆN
Trạng thái mặc định của Trình lập lịch sự kiện bị TẮT.
Bạn yêu cầu bật nó bằng bất kỳ câu lệnh nào sau đây.
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
Khi Bộ lập lịch sự kiện được BẬT, chuỗi của bộ lập lịch sự kiện được liệt kê trong đầu ra của SHOW PROCESSLIST
dưới dạng một quy trình daemon và trạng thái của nó được biểu diễn như được hiển thị ở đây:
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 2
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 3
State: Waiting for next activation
Info: NULL
2 rows in set (0.00 sec)
Khi Bộ lập lịch sự kiện được BẬT, bạn sẽ thấy nó hoạt động.
Tham khảo : Cấu hình MySQL Event Scheduler