How to create a record in MySQL database subject to TTL (Time to live) option?


You need to use MySQL event scheduler. It manages the execution of events as well as scheduling.

First, you need to create a table. After that you can create a event that will schedule every single day.

Let us create a table. The query to create a table is as follows −

mysql> create table EventDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> EventDateTime datetime
   -> );
Query OK, 0 rows affected (0.71 sec)

Now you can insert some records in the table using insert command. The query is as follows −

mysql> insert into EventDemo(EventDateTime) values('2010-09-21');
Query OK, 1 row affected (0.19 sec)
mysql> insert into EventDemo(EventDateTime) values('2016-10-27');
Query OK, 1 row affected (0.20 sec)
mysql> insert into EventDemo(EventDateTime) values('2018-12-09');
Query OK, 1 row affected (0.10 sec)
mysql> insert into EventDemo(EventDateTime) values('2019-03-12');
Query OK, 1 row affected (0.17 sec)
mysql> insert into EventDemo(EventDateTime) values('2019-01-04');
Query OK, 1 row affected (0.15 sec)

Display all records from the table using select statement. The query is as follows −

mysql> select *from EventDemo

The following is the output −

+----+---------------------+
| Id | EventDateTime       |
+----+---------------------+
|  1 | 2010-09-21 00:00:00 |
|  2 | 2016-10-27 00:00:00 |
|  3 | 2018-12-09 00:00:00 |
|  4 | 2019-03-12 00:00:00 |
|  5 | 2019-01-04 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)

Here is the query that is subject to TTL (Time To Live) −

mysql> delimiter //
mysql> CREATE EVENT
   -> DeleteDemo
   -> ON SCHEDULE EVERY 1 DAY
   -> DO
   -> BEGIN
   -> DELETE FROM
   -> EventDemo  
   -> WHERE EventDateTime < NOW();
   -> END //
Query OK, 0 rows affected (0.31 sec)

Samual Sam
Samual Sam

Learning faster. Every day.

Updated on: 30-Jul-2019

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements