CREATE TABLE foo (
dt AS DATE NOT NULL,
type AS TEXT NOT NULL,
CONSTRAINT unique_dt_type UNIQUE(dt,type) -- check constraint(?)
)
Có lỗi khi cố nghĩ đúng cú pháp để tạo ra ràng buộc duy nhất khi chỉ tồn tại một điều kiện nhất định.SQL: Ràng buộc duy nhất khi cột là một giá trị nhất định
Given, type
có thể có giá trị A-F
, chỉ có thể có một A
mỗi ngày, nhưng có thể có nhiều B-F
. Ví dụ về bảng tốt:
2010-01-02 | 'A' -- only one
2010-01-02 | 'B' -- can have multiple
2010-01-02 | 'B'
2010-01-02 | 'B'
2010-01-02 | 'C' -- can have multiple
2013-01-02 | 'A' -- only one
2010-01-02 | 'B' -- can have multiple
2010-01-02 | 'B'
2013-01-02 | 'F' -- can have multiple
2013-01-02 | 'F'
Đã đọc kiểm tra đọc/cú pháp duy nhất nhưng không có ví dụ nào. CHECK
đến gần nhưng chỉ giới hạn nó đến một phạm vi và không được sử dụng kết hợp với một kịch bản UNIQUE
. Cũng cố gắng tìm kiếm, nhưng kỹ năng tìm kiếm của tôi hoặc là không lên đến ngang, hoặc không có bất kỳ câu hỏi tương tự.
Bạn có thể easely làm điều đó bằng cách sử dụng kích hoạt! – Houari
@Houari: Nghe có vẻ đầy hứa hẹn, bạn có ví dụ nhanh không? Tôi đã tìm thấy một số kết quả khi tôi tìm kiếm 'sql có điều kiện duy nhất', nhưng không thành công (chúng đã được ghi ngày) – vol7ron
Tôi có thể đã tìm thấy giải pháp trong câu hỏi được nêu ở đây: http://stackoverflow.com/q/987099/183181, nếu 'where' được cho phép trong khi tạo chỉ mục – vol7ron