Tôi có một tình huống mà tôi cần phải thực thi một ràng buộc duy nhất trên một tập hợp các cột, nhưng chỉ cho một giá trị của một cột.ràng buộc duy nhất có điều kiện
Vì vậy, ví dụ tôi có một bảng như Bảng (ID, Tên, RecordStatus).
RecordStatus chỉ có thể có giá trị 1 hoặc 2 (hoạt động hoặc đã xóa) và tôi muốn tạo một ràng buộc duy nhất trên (ID, RecordStatus) chỉ khi RecordStatus = 1, vì tôi không quan tâm nếu có nhiều mục bị xóa bản ghi có cùng ID.
Ngoài việc viết trình kích hoạt, tôi có thể làm điều đó không?
Tôi đang sử dụng SQL Server 2005.
Thiết kế này là một nỗi đau phổ biến. Bạn đã xem xét việc thay đổi thiết kế sao cho các bản ghi 'xóa' không chính thức bị xóa khỏi bảng và có thể được chuyển sang bảng 'lưu trữ'? – onedaywhen
... vì không có khả năng viết một ràng buộc UNIQUE để thực thi một khóa đơn giản nên được coi là một 'mã mùi', IMO. Nếu bạn không thể thay đổi thiết kế (SQL DDL) vì nhiều bảng khác tham chiếu đến bảng này thì tôi sẽ cược rằng DML SQL của bạn cũng bị kết quả, nghĩa là bạn phải nhớ thêm ... AND Table.RecordStatus = 1 ' cho hầu hết các điều kiện tìm kiếm và tham gia các điều kiện liên quan đến bảng này và gặp phải các lỗi tinh vi khi nó chắc chắn bị bỏ qua vào dịp này. – onedaywhen