Asked Jul 26th, 12:40 PM 96 1 3
  • 96 1 3
+1

[MySQL] Làm sao để dữ liệu tự xóa sau 7 ngày

Share
  • 96 1 3

Cho mình hỏi trong CSDL MySQL, làm sao để row trong table tự động xóa sau số ngày nhất định, ví dụ 7 ngày. Giả định mình muốn lưu lịch sử giao dịch của người dùng chỉ trong 7 ngày đổ lại, lâu hơn thì tự xóa hết.

Xin cảm ơn.

Avatar Dũng @quocdungabc
Jul 31st, 12:21 PM

Cảm ơn mọi người đã giải đáp giúp mình nhé.

0
| Reply
Share

3 ANSWERS


Answered Jul 27th, 1:17 AM
+2

Bạn có thể crontab trên server để schedule nhé. Crontab là công cụ trên server giúp đặt lịch để thực thi một chương trình nào đó. Như bạn thì tự động xóa records trong table sau số ngày nhất định. Về phần chương trình thực thi thì có thể là:

  • Script chạy lệnh SQL trực tiếp bằng command line
  • Script của ứng dụng của bạn, trong script của ứng dụng thì sẽ chứa logic để quyết định nên xóa những record nào.

Thường các web framework thì đều có các cơ chế scheduling, chúng ta chỉ cần đặt crontab chạy script của framework, sau đó framework sẽ dựa vào config của người dùng để thực thi các công việc tương ứng.

Share
Answered Jul 27th, 3:18 AM
+2

Vấn đề tương đối đơn giản:

  • Bạn cần một cách để tự động chạy một script định kỳ vào 0h mỗi ngày. Cách đơn giản nhất là sử dụng cronjob của linux.
  • Ở trong script chạy định kỳ đó, bạn cần tìm những row có thời gian tạo (thường được lưu thành một field có tên như created_at) lớn hơn 7 ngày và xóa những row đó (DELETE FROM transaction_history WHERE created_at < adddate(now(),-7))
Share
Answered Jul 26th, 12:43 PM
0

Bạn thử tìm hiểu về task scheduling xem.

Share
Viblo
Let's register a Viblo Account to get more interesting posts.