با استفاده از این خاصیت در MYSQL شما میتونید یک کار خاص رو به MYSQL بسپارید تا در مقاطع زمانی مشخص شده به صورت اتوماتیک انجام بده.
مثلا فرض کنید ما میخواهیم هر روز اطلاعاتی رو که بیش از 10 روز پیش ایجاد شده اند رو پاک کنیم و نمیخوایم این کار رو به PHP یا ASP و... بسپاریم.با استفاده از زمانبند رویداد ما میتونیم به MYSQL بگیم خودش این عمل رو هر روز انجام بده.
مثال زیر فکر میکنم گویای مسئله باشه:

ابتدای کار لازمه که ما زمانبند رو در MYSQL فعال کنیم برای این کار در PHPMYADMIN در قسمت SQL کد زیر را وارد کنید تا زمانبند فعال بشه:

1
SET GLOBAL event_scheduler = ON;

برای روشن کردن دائمی رویدادها هم میتونید وارد فایل my.ini مای اس کیو ال شوید و دستور زیر رو در آن وارد کنید و سرویس رو ریستارت کنید :

event_scheduler=ON


یا

1
SET GLOBAL event_scheduler = 1;


که در صورت درست انجام شدن با پیغام 
Your SQL query has been executed successfully
روبرو خواهید شد
خوب بعد از این کار نوبت به ساخت جدول مثال ما میرسه
برای این مثال ما جدولی به نام cart رو با مشخصات زیر ایجاد میکنیم

1
2
3
4
5
6
7
8
CREATE TABLE cart
(
cart_id INT  AUTO_INCREMENT,
user_id INT,
product_id INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (cart_id)
) ;


بعد از ایجاد جدول فوق وارد اون میشیم و در قسمت کد SQL کد زیر رو وارد میکنیم

 

1
2
3
4
CREATE EVENT newEvent
ON SCHEDULE EVERY 1 DAY
DO
DELETE FROM cart WHERE created_at <= DATE_SUB(NOW(), INTERVAL 10 DAY) ;


و اما توضیح کد بالا
خط اول که دستور ایجاد یک رویداد جدید به نام newEvent رو صادر میکنه ما به جای newEvent میتونیم نام دلخواه خودمون رو بذاریم
خط دوم مشخص میکنه که این رویداد باید هر روز کاری که گفته میشه رو انجام بده که میتونید به جای EVERY 1 DAY از هر مقدار دیگه استفاده کنید مثلا EVERY 1 SECOND که هر ثانیه عملیات گفته شده رو انجام بده
در خط سوم کلمه کلیدی DO اومده که معرف عملیاتی هست که باید انجام بشه و در خط چهارم دستوری که باید انجام بشه رو ذکر میکنیم که در اینجا رکوردهایی که بیش از 10 روز از ایجادشون میگذره رو حذف میکنیم.
اما یه سری نکات لازم هست که دوستان بدونن.
اگه ما یک زمانبند رو میخوایم از مثلا فردا شروع به کار کنه و یک سال هم کار کنه لازم هست از دستور زیر استفاده کنیم
این دستورات قبل از کلمه کلیدی Do نوشته میشن:

 

1
2
STARTS CURRENT_TIMESTAMP + INTERVAL 1 DAY
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 YEAR


این دستور در خط اول زمان شرع شدن زمانبند رو مشخص میکنه که از 24 ساعت دیگه شروع بشه و در خط دوم مشخص میکنه که یک سال دیگه( از امروز نه از شروع) پایان پیدا کنه
البته ما میتونیم به استارت و پایان تاریخ هم بدیم مثل مثال زیر

1
STARTS '2012-10-30 13:00:00'

البته هنوز تاریخ فارسی ساپورت نمیکنه

برای نمایش تمامی زمانبند های استفاده شده در یک دیتابیس میتونیم از دستور

1
SHOW EVENTS;


استفاده کنیم که تمام زمانبندهای دیتابیس مورد نظر رو نمایش میده
برای ویرایش یک زمانبند میتونیم از کد زیر استفاده کنیم:

1
2
3
4
Alter newEvent
ON SCHEDULE EVERY 1 Month
DO
DELETE FROM cart WHERE created_at <= DATE_SUB(NOW(), INTERVAL 10 DAY) ;



همونطور که میدونید کلمه کلیدی Alter مشخص کننده این هست که زمانبند وجود داره و میخواهیم جایگزینی انجام بشه مثل Alter Table
lمثلا دستور زیر نام زمانبندی که وجود داره رو تغییر میده:

1
2
ALTER EVENT newEvent
    RENAME TO myEvent;


خوب و اما از بین بردن زمانبند
دستور زیر زمانبند موجود رو از بین میبره

1
DROP EVENT newEvent;

که به جای newEvent نام زمانبندی که میخوایم از بین بره رو وارد میکنیم