Tôi rất tò mò nếu tôi có thể dựa vào bất kỳ thứ tự cụ thể nào để xác thực các ràng buộc NOT NULL, FOREIGN KEY, UNIQUE, CHECK
và các kích hoạt BEFORE
.Chuẩn SQL có xác định thứ tự xác nhận ràng buộc và kích hoạt kích hoạt không?
Từ kinh nghiệm tôi biết rằng trước tiên, MySQL kiểm tra NOT NULL
, sau đó khởi chạy kích hoạt BEFORE
và sau đó kiểm tra các ràng buộc UNIQUE
. Oracle kiểm tra NOT NULL
sau khi kích hoạt BEFORE
(Tôi tin rằng SQLServer làm như vậy, nhưng không nhớ). Liệu các tiêu chuẩn nói bất cứ điều gì về thứ tự hoặc nó hoàn toàn lên đến DB nhà cung cấp?
Oracle không ** không ** kiểm tra NOT NULL cho đến sau khi trình kích hoạt 'trước'. Điều đó cho phép trình kích hoạt 'trước' thay đổi các giá trị sao cho chúng không còn null nữa. –
@Shannon Mức độ nghiêm trọng: Vâng, xin lỗi, tôi đã suy nghĩ về mysql ... Cố định – a1ex07
Bạn có thể tải xuống một [draft] (http://www.wiscorp.com/sql200n.zip) (Liên kết được lấy từ Wikipedia) của tiêu chuẩn gần đây và xem xét nó một mình (Tôi không thể tìm thấy bất kỳ định nghĩa nào) –