sql >> Databáze >  >> RDS >> PostgreSQL

Jedinečná kombinace v tabulce

To může (a mělo by) být vyřešeno na úrovni DB, pokud chcete vždy zaručit integritu dat. Existují různé způsoby, částečný UNIQUE INDEX pravděpodobně nejjednodušší a nejúčinnější.

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

->sqlfiddle

Také urychlí dotazy k načtení obrázků na domovské stránce jako doplňkovou výhodu.

Změnit schéma

Jiný přístup by bylo přidat sloupec homepage_id do tabulky house , ukazující na vybraný obrázek. Automaticky lze vybrat pouze 1 snímek. Nepotřebovali byste picture.homepage nic víc. Referenční integrita může být trochu komplikovaná kvůli omezením cizích klíčů v obou směrech, ale mám taková fungující řešení.




  1. MySQL INSERT INTO ... VALUES a SELECT

  2. jak odstranit každý záznam kromě jednoho za hodinu

  3. Jak zobrazit hodnotu proměnné na příkazovém řádku v MySQL?

  4. Žádná výzva k zadání hesla pro superuživatele postgresql