I have a table defined by the following SQL:
CREATE TABLE test (
id integer PRIMARY KEY NOT NULL UNIQUE,
status text NOT NULL,
enddate date,
/* Checks */
CHECK (status IN ("Current", "Complete"))
);
I'd like to add a constraint that requires enddate
to be non-null if the status
is "Complete".
Is this possible? I am using SQLite v3.6.16.
This will work in SQLite, with the
CHECK
constraint written inline. I changed double quotes to apostrophes so it can be used in PHP.There's nothing stopping you from having multiple
CHECK
constraints on a single table. IMO the simplest and most easily expandable solution:This uses the fact that if A then B is logically equivalent to either not A or B.
How about: