Nếu bạn chắc chắn rằng việc chèn vào DB sẽ chỉ xảy ra từ phần cuối ứng dụng của bạn thì tôi sẽ chọn tùy chọn đầu tiên bằng cách tạo một thủ tục và bao gồm cả INSERT
câu lệnh trong TRANSACTION
khối. điều này sẽ đảm bảo hoạt động nguyên tử.
Tuy nhiên, trong trường hợp có khả năng chèn vào DB có thể xảy ra thông qua truy vấn adhoc hoặc thông qua công cụ ETL của bên thứ ba thì bạn không có tùy chọn nào khác ngoài việc có một trình kích hoạt AFTER INSERT TRIGGER
để thực hiện thao tác chèn nhật ký (tùy chọn thứ 2) vì không có cách nào để gọi INSERT
khác tuyên bố tự động hoặc rõ ràng.