2 CREATE TABLE actor.toolbar (
3 id BIGSERIAL PRIMARY KEY,
4 ws INT REFERENCES actor.workstation (id) ON DELETE CASCADE,
5 org INT REFERENCES actor.org_unit (id) ON DELETE CASCADE,
6 usr INT REFERENCES actor.usr (id) ON DELETE CASCADE,
9 CONSTRAINT label_once_per_ws UNIQUE (ws, label) WHERE ws IS NOT NULL,
10 CONSTRAINT label_once_per_org UNIQUE (org, label) WHERE org IS NOT NULL,
11 CONSTRAINT label_once_per_usr UNIQUE (usr, label) WHERE usr IS NOT NULL,
12 CONSTRAINT only_one_type CHECK (
13 (ws IS NOT NULL AND COALESCE(org,usr) IS NULL) OR
14 (org IS NOT NULL AND COALESCE(ws,usr) IS NULL) OR
15 (usr IS NOT NULL AND COALESCE(org,ws) IS NULL)
17 CONSTRAINT layout_must_be_json CHECK ( is_json(layout) )