Tạo trigger trg_Customers_StatusAudit trên bảng Customers, kích hoạt sau khi UPDATE.
Với mỗi khách hàng mà status thật sự thay đổi (giá trị mới khác giá trị cũ) ghi một dòng vào AuditLog(customer_id, old_status, new_status).
Cập nhật cột khác (ví dụ city) hoặc gán lại đúng trạng thái cũ thì không ghi log. Cột log_id, changed_at tự sinh — không cần điền.
inserted (giá trị mới) và deleted (giá trị cũ), ghép theo customer_id; một câu UPDATE có thể đổi nhiều khách hàng.FOR EACH ROW, so sánh OLD.status và NEW.status.Hệ thống chấm chạy vài câu UPDATE (đổi trạng thái nhiều khách hàng, đổi city, đổi trạng thái lần thứ hai cho cùng khách hàng) rồi in customer_id, old_status, new_status của AuditLog theo customer_id, log_id.
Bảng Customers(customer_id, status), AuditLog(log_id, customer_id, old_status, new_status, changed_at).
customer_id, old_status, new_status (TAB), sắp theo customer_id rồi log_id.
Ví dụ:
Đầu vào:
Đầu ra:
1 ACTIVE INACTIVE
1 INACTIVE ACTIVE
5 NEW ACTIVE
7 ACTIVE INACTIVE
Giải thích:
Đang tải editor...