sql >> Databasteknik >  >> RDS >> PostgreSQL

Unik kombination i ett bord

Det kan (och bör) lösas på DB-nivå om du vill garantera dataintegritet hela tiden. Det finns olika sätt, en delvis UNIQUE INDEX förmodligen den enklaste och mest effektiva.

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

->sqlfiddle

Kommer också att påskynda förfrågningar för att hämta hemsidesbilderna som säkerhetsförmån.

Ändra schema

Ett annat tillvägagångssätt skulle vara att lägga till en kolumn homepage_id till tabellen house , pekar på en vald bild. Automatiskt kan endast 1 bild väljas. Du skulle inte behöva picture.homepage längre. Referensintegritet kan vara lite knepigt på grund av främmande nyckelbegränsningar i båda riktningarna, men jag har fungerande lösningar som den.




  1. Sessionsbaserad global variabel i Postgresql lagrad procedur?

  2. Hur man ställer in navigeringsformuläret som standardformulär i Microsoft Access

  3. Migrera en Oracle-databas till MySQL på AWS, del 2

  4. Ge tabellnivåbehörigheter i SQL Server