-- A property cannot be its own parent. Deeper cycle prevention (e.g. -- A→B→A) is enforced in the service layer because Postgres can't express -- recursive CHECK constraints; the assertNoCycle helper in -- src/lib/server/services/properties.ts walks ancestors before save. ALTER TABLE "properties" ADD CONSTRAINT "properties_parent_not_self" CHECK (parent_id IS NULL OR parent_id <> id);