Quantcast
Viewing all articles
Browse latest Browse all 3

Answer by prasad_ for Mysql query - Event to delete rows by its value

Basically, i want to create an event that every day delete rows wherecheck_in value in older than today.

Using MySQL 8.0.34:

CREATE TABLE ts (    c1 INT AUTO_INCREMENT PRIMARY KEY,    c2 TIMESTAMP NOT NULL);

Assume that c2 is the check_in column. Some sample data (and today is 2023-11-30):

Some data:

+----+---------------------+| c1 | c2                  |+----+---------------------+|  1 | 2023-11-30 11:28:57 ||  2 | 2023-11-28 20:30:00 ||  3 | 2023-11-29 23:59:59 ||  4 | 2023-11-30 00:00:01 |+----+---------------------+

The query:

SELECT * FROM ts WHERE c2 < TIMESTAMP(DATE(CURRENT_TIMESTAMP));+----+---------------------+| c1 | c2                  |+----+---------------------+|  2 | 2023-11-28 20:30:00 ||  3 | 2023-11-29 23:59:59 |+----+---------------------+

The event:

delimiter |CREATE EVENT delete_daily    ON SCHEDULE      EVERY 1 DAY    COMMENT 'Deletes rows each day where c2 column value is older than today'    DO      BEGIN        DELETE FROM ts WHERE c2 < TIMESTAMP(DATE(CURRENT_TIMESTAMP));      END |delimiter ;

Verify the event creation:

SHOW EVENTS\G*************************** 1. row ***************************                  Db: test_db                Name: delete_daily             Definer: admin_1@localhost           Time zone: SYSTEM                Type: RECURRING          Execute at: NULL      Interval value: 1      Interval field: DAY              Starts: 2023-11-30 12:02:08                Ends: NULL              Status: ENABLED...

Viewing all articles
Browse latest Browse all 3

Trending Articles