Ich habe eine Spalte: standard BOOLEAN NOT NULL
Ich möchte eine Zeile True und alle anderen False erzwingen. Abhängig von dieser Einschränkung gibt es keine FKs oder sonst etwas. Ich weiß, dass ich es mit plpgsql schaffen kann, aber das scheint ein Vorschlaghammer zu sein. Ich würde so etwas wie eine CHECK
oder UNIQUE
Einschränkung bevorzugen . Je einfacher desto besser.
Eine Zeile muss True sein, sie kann nicht alle False sein (daher müsste die erste eingefügte Zeile True sein).
Die Zeile muss aktualisiert werden, was bedeutet, dass ich warten muss, um die Einschränkungen zu überprüfen, bis die Aktualisierungen abgeschlossen sind, da alle Zeilen zuerst auf False und danach auf eine Zeile True gesetzt werden können.
Es gibt eine FK zwischen products.tax_rate_id
und tax_rate.id
, die jedoch nichts mit dem Standard- oder Standardsteuersatz zu tun hat, der vom Benutzer ausgewählt werden kann, um das Erstellen neuer Produkte zu vereinfachen.
PostgreSQL 9.5, wenn es darauf ankommt.
Hintergrund
Die Tabelle ist der Steuersatz. Einer der Steuersätze ist der Standard ( standard
da der Standard ein Postgres-Befehl ist). Wenn ein neues Produkt hinzugefügt wird, wird der Standardsteuersatz auf das Produkt angewendet. Wenn dies nicht standard
der Fall ist, muss die Datenbank entweder eine Vermutung anstellen oder alle Arten von nicht benötigten Überprüfungen durchführen. Die einfache Lösung, dachte ich, bestand darin, sicherzustellen, dass es eine gibt standard
.
Mit "Standard" oben meine ich für die Präsentationsschicht (UI). Es gibt eine Benutzeroption zum Ändern des Standardsteuersatzes. Ich muss entweder zusätzliche Überprüfungen hinzufügen, um sicherzustellen, dass die GUI / der Benutzer nicht versucht, die tax_rate_id auf NULL zu setzen, oder dann einfach einen Standardsteuersatz festlegen.