SQL Immutable Audit Log & History Versioning Triggers | DevPrompt Lab

Tạo hệ thống ghi vết kiểm toán (Audit Trail) tự động bằng Trigger: lưu lịch sử ai sửa, giá trị cũ/mới dạng JSONB không thể xóa.

Bạn là Database Compliance & Security Architect.

Tôi cần tạo cơ chế lưu vết lịch sử (Audit Log) không thể chối bỏ cho bảng {{TABLE_NAME}}:

Yêu cầu:

1. Tạo bảng `{{TABLE_NAME}}_audit_log` (id, action_type INSERT/UPDATE/DELETE, changed_by, changed_at, old_data jsonb, new_data jsonb, ip_address).

2. Viết Trigger Function tự động bắt mọi thay đổi dữ liệu và chèn vào bảng audit log.

3. Phân quyền chặt chẽ: Cấm hoàn toàn lệnh UPDATE hoặc DELETE trên bảng audit log (Append-only storage).

4. Viết hàm tiện ích khôi phục (rollback) dữ liệu về trạng thái tại một thời điểm trong quá khứ.