CREATE TABLE default_status (
    project_type VARCHAR(40) NOT NULL DEFAULT 'default',
    kind VARCHAR(40) NOT NULL,
    status VARCHAR(40) NOT NULL,
    rank INTEGER NOT NULL,
    def INTEGER,
    PRIMARY KEY (kind,status),
    CHECK (def = 1 OR def IS NULL)
);

CREATE TRIGGER ai_default_status
    AFTER INSERT ON default_status
FOR EACH ROW WHEN NEW.def = 1
BEGIN
    UPDATE
        default_status
    SET
        def = NULL
    WHERE
        kind = NEW.kind AND status != NEW.status AND def = 1
    ;
END;

CREATE TRIGGER au_default_status
    AFTER UPDATE ON default_status
FOR EACH ROW WHEN NEW.def = 1
BEGIN
    UPDATE
        default_status
    SET
        def = NULL
    WHERE
        kind = NEW.kind AND status != NEW.status AND def = 1
    ;
END;