-- channels.community_id is immutable: a channel can never be re-tenanted. -- (Conformance: "Migration lint forbids channel re-tenanting except through an -- explicitly modeled admission path." We have no such path, so: hard block.) CREATE FUNCTION channels_community_id_immutable() RETURNS TRIGGER AS $$ BEGIN IF NEW.community_id IS DISTINCT FROM OLD.community_id THEN RAISE EXCEPTION 'channels.community_id is immutable (channel % cannot be re-tenanted)', OLD.id USING ERRCODE = 'check_violation'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql;