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

Unik kombination i et bord

Det kan (og bør) løses på DB-niveau, hvis du til enhver tid vil garantere dataintegritet. Der er forskellige måder, en delvis UNIQUE INDEX sandsynligvis den enkleste og mest effektive.

CREATE UNIQUE INDEX picture_homepage_uni ON picture (house_id) WHERE homepage;

->sqlfiddle

Vil også fremskynde forespørgsler for at hente hjemmesidebillederne som sikkerhedsstillelse.

Skift skema

En anden tilgang ville være at tilføje en kolonne homepage_id til tabellen house , og peger på et valgt billede. Automatisk kan kun 1 billede vælges. Du behøver ikke picture.homepage mere. Referenceintegritet kan være en smule vanskelig på grund af fremmednøglebegrænsninger i begge retninger, men jeg har sådanne fungerende løsninger.




  1. Laravel-migrering:unik nøgle er for lang, selvom den er angivet

  2. MySQL fuldtekstsøgning på flere tabeller med forskellige felter

  3. Kalder Oracle lagret procedure med output parameter fra SQL Server

  4. Glidning af visse poster til slutningen af ​​en kørsel af samme dato