Tôi đang cố gắng tạo một ràng buộc UNIQUE INDEX cho hai cột, nhưng chỉ khi một cột khác chứa giá trị 1. Ví dụ: column_1
và column_2
chỉ nên là UNIQUE khi active = 1
. Bất kỳ hàng nào chứa active = 0
đều có thể chia sẻ giá trị cho column_1
và column_2
với một hàng khác, bất kể giá trị của hàng khác cho active
là gì. Nhưng các hàng nơi active = 1
không thể chia sẻ giá trị của column_1
hoặc column_2
với một hàng khác có active = 1
.Ràng buộc UNIQUE, chỉ khi một trường có chứa giá trị cụ thể
Ý tôi là "chia sẻ" là hai hàng có cùng (các) giá trị trong cùng một cột. Ví dụ: row1.a = row2.a AND row1.b = row2.b. Giá trị sẽ chỉ được chia sẻ nếu cả hai cột trong hàng1 khớp với hai cột khác trong hàng2.
Tôi hy vọng tôi đã tự làm rõ. : \
Tôi nhận được đề xuất tương tự về IRC; tạo một bảng hoạt động và một bảng không hoạt động. Nhưng chúng theo cách bạn đặt nó có ý nghĩa hơn; có một bảng lịch sử và một bảng hoạt động. Tuy nhiên, bảng này có rất nhiều lĩnh vực và nó có vẻ như nhân đôi các lĩnh vực thành hai bảng sẽ là điều sai trái để làm. Làm thế nào bạn đề nghị tôi tránh loại dư thừa này? – Sam
Một chút không chuẩn hóa có thể đi một chặng đường dài, vì vậy đừng lo lắng về các định nghĩa trùng lặp. Tất nhiên, bạn sẽ phải thực hiện bất kỳ thay đổi nào đối với bảng gốc đối với bảng lịch sử, do đó, đó là một số chi phí, nhưng, IMHO nó cũng đáng giá dữ liệu sạch. – SWeko
Hmm, nếu tôi chỉ tách riêng dữ liệu cần lập chỉ mục duy nhất thì sao? Các bảng: mydata, mydata_active, mydata_inactive. Bằng cách này, dữ liệu mydata chứa các cột chính và cột dữ liệu.Và, mydata_active và mydata_inactive sẽ chỉ chứa các cột cần được lập chỉ mục duy nhất và Khóa ngoài tham chiếu mydata. Đây là một cách khác, nhưng nó đòi hỏi thêm một bảng (thứ ba). – Sam