Saya memiliki tabel OTP dan saya ingin menghapus data yang lebih lama dari 5 menit secara otomatis

Lalu bagaimana saya bisa membuat trigger atau prosedur untuk itu?

-1
35_Khushal Makhija 12 Mei 2021, 08:53

2 jawaban

Jawaban Terbaik

Anda harus menggunakan prosedur Penjadwal Acara.

CREATE EVENT remove_old_rows
ON SCHEDULE
EVERY 10 SECOND
COMMENT 'Delete the rows that are older than 5 minutes from OTP table.'
DO
    DELETE 
    FROM OTP_database.OTP_table
    WHERE created_at < CURRENT_TIMESTAMP - INTERVAL 5 MINUTE;

Jangan lupa untuk mengaktifkan Penjadwal Acara.

0
Akina 12 Mei 2021, 06:11

Jangan lakukan itu! Cukup buat tampilan untuk mendapatkan data terbaru:

create view v_otp as
    select otp.*
    from otp
    where otp.created_at >= now() - interval 5 minute;

Siapa pun yang menggunakan tampilan hanya melihat data terbaru.

Kemudian Anda dapat dengan santai menghapus data lama selama periode ketika database tidak sibuk.

Manfaat tambahan adalah bahwa ini selalu akurat. Jika suatu acara atau pekerjaan tertunda, pengguna Anda mungkin melihat data lama. Selanjutnya, ini tidak melibatkan penguncian yang rumit dan semantik transaksi saat server sibuk.

0
Gordon Linoff 12 Mei 2021, 12:19