Chúng tôi có DEFAULT trên CreatedDate và không thực thi với Triggers
Có những lúc chúng ta muốn thiết lập ngày tháng rõ ràng - ví dụ nếu chúng tôi nhập dữ liệu từ một số nguồn khác.
Có một rủi ro mà Bug Ứng dụng có thể gây rối với các Tạo ngày, hoặc một DBA bất mãn cho rằng vấn đề (chúng tôi không có phi DBA kết nối trực tiếp đến DBS của chúng tôi)
Tôi cho rằng bạn có thể đặt Column- cấp quyền trên CreateDate.
Nhà nửa đường có thể là để INSERT TRIGGER tạo hàng trong bảng 1: 1, do đó cột đó nằm ngoài bảng chính. Bảng thứ hai có thể có quyền SELECT, trong đó bảng chính có quyền UPDATE và do đó không cần trình kích hoạt UPDATE để ngăn các thay đổi đối với CreateDate - điều này sẽ loại bỏ một số "trọng lượng" khi cập nhật các hàng bình thường.
Tôi cho rằng bạn coul có một UPDATE/DELETE kích hoạt trên bảng thứ hai để ngăn chặn sự thay đổi (mà sẽ không bao giờ được thực hiện trong trường hợp bình thường, vì vậy "nhẹ")
Bit của một nỗi đau để có bảng phụ mặc dù ... có thể có một bảng cho tất cả các CreateDates - TableName, PK, CreateDate.Hầu hết các kiến trúc sư cơ sở dữ liệu sẽ ghét điều đó mặc dù ...
Hãy lưu ý rằng người dùng có thể bỏ qua vì giá trị mặc định không được tính đến khi bạn chèn giá trị thực. Và nó cũng có thể được cập nhật bởi người dùng. Nó có thể đủ tốt nếu bạn có thể kiểm soát những gì SQL được chạy (và bạn không thể :-) nhưng nó không an toàn. – paxdiablo
Đó thực sự là một điều tốt bởi vì nếu người dùng có một ngày cụ thể họ cần phải đặt ở đó, có lẽ nó nên được cho phép trừ khi bạn có các quy tắc chi phối khác. – James
Tôn trọng không đồng ý, @James. Bạn chưa từng nghe về Sarbanes-Oxley chưa? :-) Nếu bạn có cột DateCreated, nó sẽ được đặt thành ngày hàng được tạo. Nếu bạn muốn một cột có thể thay đổi người dùng, nó sẽ được gọi là DateCreatedForPurposesOfFraud hoặc một cái gì đó tương tự. – paxdiablo