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,
There's nothing stopping you from having multiple CHECK constraints on a single table. IMO the simplest and most easily expandable solution:
CHECK (status IN ("Current", "Complete"))
CHECK (status <> "Complete" OR enddate IS NOT NULL)
This uses the fact that if A then B is logically equivalent to either not A or B.