Tôi có một bảng được định nghĩa bởi SQL sau:Ràng buộc kiểm tra SQLite có điều kiện?
CREATE TABLE test (
id integer PRIMARY KEY NOT NULL UNIQUE,
status text NOT NULL,
enddate date,
/* Checks */
CHECK (status IN ("Current", "Complete"))
);
Tôi muốn thêm một hạn chế đòi hỏi enddate
là không null nếu các status
là "Complete".
Điều này có khả thi không? Tôi đang sử dụng SQLite v3.6.16.
Cảm ơn, công trình này. đây có phải cách duy nhất không? Trong tương lai, tôi có thể có số lượng trạng thái lớn hơn và séc có thể phát triển khá lớn. – Rezzie
Khi các ràng buộc trở nên rất phức tạp, cách tiếp cận thường là đặt một lớp ở phía trước của bảng để thực thi nó. Giống như một lớp thủ tục lưu trữ, hoặc một thư viện truy cập dữ liệu. – Andomar
Cảm ơn lời khuyên. – Rezzie