Yêu cầu thg 7 26, 2021 12:40 CH 388 1 3
  • 388 1 3
+1

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

Chia sẻ
  • 388 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
thg 7 31, 2021 12:21 CH

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

3 CÂU TRẢ LỜI


Đã trả lời thg 7 27, 2021 1:17 SA
+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.

Chia sẻ
Đã trả lời thg 7 27, 2021 3:18 SA
+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))
Chia sẻ
Đã trả lời thg 7 26, 2021 12:43 CH
0

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

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí