sql >> Database teknologi >  >> RDS >> PostgreSQL

Unik værdibegrænsning på tværs af flere kolonner

Du kan ikke nemt gøre dette. least() /greatest() tilgang vil ikke fungere i alle tilfælde.

Postgres har nogle smarte indeksoperationer. Men den bedste måde er at bruge et krydstabel. For eksempel:

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)
);

Dette begrænser også antallet af telefonnumre til 2 for hver bruger.



  1. vælge *, der matcher brugerens postnummer i mysql-tabellen?

  2. 5 tips til at holde din database sikker

  3. Returner en værdi og et resultatsæt fra lagret procedure classic asp

  4. Formater MySQL ved hjælp af CONCAT