Vous ne pouvez pas facilement faire cela. Le least()
/greatest()
approche ne fonctionnera pas dans tous les cas.
Postgres a quelques opérations d'index fantaisistes. Mais le meilleur moyen est d'utiliser une table de jonction. Par exemple :
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)
);
Cela limite également le nombre de numéros de téléphone à 2 pour chaque utilisateur.