Hi,

Consider:

CREATE TABLE enrolment (
id      INTEGER PRIMARY KEY,
child   INT NOT NULL REFERENCES child (id),
 start   INT NOT NULL,
leaver  INT NOT NULL DEFAULT 0 CHECK (leaver BETWEEN 0 AND 1), -- BOOL
);

CREATE TABLE enrolmentItem (
id          INTEGER PRIMARY KEY,
enrolment   INT NOT NULL REFERENCES enrolment (id) ON DELETE CASCADE,
 day         INT NOT NULL,
start       INT NOT NULL,
end         INT NOT NULL CHECK (start < end),
);

I'm looking for an elegant way to prevent enrolments having enrolmentItems
if leaver is set to 1.
This way, you can't change the leaver field if enrolmentItems are attached,
and you can't add an enrolmentItem if leaver is set to 1.

I think 2 triggers could work, but it seems overkill.  I could have a
leaver field in enrolmentItem referencing leaver in enrolment and put a
check against that, but I'd be storing unneeded data.

Ideally, I'd like a check in enrolmentItem that can examine a different
field in the referenced enrolment record.

Suggestions?

Thanks.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to