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

Combinazione unica in un tavolo

Può (e dovrebbe) essere risolto a livello di DB se si desidera garantire l'integrità dei dati in ogni momento. Esistono vari modi, un parziale UNIQUE INDEX probabilmente è il più semplice ed efficace.

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

->sqlfiddle

Velocerà anche le query per recuperare le immagini della home page come vantaggio collaterale.

Cambia schema

Un approccio diverso sarebbe quello di aggiungere una colonna homepage_id al tavolo house , puntando a un'immagine selezionata. Automaticamente, è possibile selezionare solo 1 immagine. Non avresti bisogno di picture.homepage più. L'integrità referenziale potrebbe essere un po' complicata a causa dei vincoli di chiave esterna in entrambe le direzioni, ma ho soluzioni funzionanti come questa.