Nemůžete to snadno udělat. least()
/greatest()
přístup nebude fungovat ve všech případech.
Postgres má nějaké efektní indexové operace. Ale nejlepší způsob je použít spojovací tabulku. Například:
create table userPhones (
userPhoneId bigint primary key ,
userId bigint references users(id),
phone_counter int check (phone_counter in (1, 2)),
phone varchar,
unique (userId, phone_counter),
unique(phone)
);
To také omezuje počet telefonních čísel na 2 pro každého uživatele.