Я бы полностью отказался от enum и сделал бы event_type правильной таблицей, содержащей флаг, если это тип по умолчанию.
create table event_type
(
id integer primary key,
name text not null unique,
is_default_type boolean not null default true
);
create table events
(
id integer not null,
type integer not null references event_type,
created_at timestamp without time zone
);
Чтобы найти людей с подмножеством по умолчанию, вы можете сделать:
select e.*
from events e
join event_type et on et.id = e.type and et.is_default_type;
Чтобы сохранить подмножество по умолчанию, вы просто меняете флаг. Для удобства вы можете создать представление из вышеприведенного запроса, поэтому вам не нужно беспокоиться об объединении.
Если вы создаете представление с использованием оператора IN
вместо объединения, оно также автоматически обновляется.