CREATE TABLE a ( id UUID NOT NULL DEFAULT gen_random_uuid(), PRIMARY KEY (id) ); CREATE TABLE aa ( a UUID NOT NULL, at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(), PRIMARY KEY (a, at), CONSTRAINT fk_a FOREIGN KEY (a) REFERENCES a (id) ) INTERLEAVE IN PARENT a (a); CREATE TABLE ab ( a UUID NOT NULL, at TIMESTAMPTZ NOT NULL DEFAULT statement_timestamp(), PRIMARY KEY (a, at), CONSTRAINT fk_a FOREIGN KEY (a) REFERENCES a (id) ) INTERLEAVE IN PARENT a (a); CREATE TABLE ac ( a UUID NOT NULL, aa TIMESTAMPTZ, ab TIMESTAMPTZ, PRIMARY KEY (a), CONSTRAINT fk_a FOREIGN KEY (a) REFERENCES a (id), CONSTRAINT fk_aa FOREIGN KEY (a, aa) REFERENCES aa (a, at), CONSTRAINT fk_ab FOREIGN KEY (a, ab) REFERENCES ab (a, at) ) INTERLEAVE IN PARENT a (a);