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