Вы можете использовать ограничение внешнего ключа и ограничение проверки:
create table projects (
projectid int generated always as identity,
name . . . ,
parent_projectid int,
check (parent_projectid <> projectid),
foreign key (parent_projectid) references projects(projectid)
);