Ho una colonna: standard BOOLEAN NOT NULL
Vorrei imporre una riga True e tutti gli altri False. Non ci sono FK o altro a seconda di questo vincolo. So che posso realizzarlo con plpgsql, ma questo sembra un martello. Io preferirei qualcosa di simile a una CHECK
o UNIQUE
vincolo. Più semplice è, meglio è.
Una riga deve essere True, non possono essere tutti False (quindi la prima riga inserita dovrebbe essere True).
La riga dovrà essere aggiornata, il che significa che devo aspettare per controllare i vincoli fino a quando non vengono effettuati gli aggiornamenti, poiché tutte le righe possono essere impostate False prima e una riga True in seguito.
C'è un FK tra products.tax_rate_id
e tax_rate.id
, ma non ha nulla a che fare con l'aliquota fiscale predefinita o standard, che è selezionabile dall'utente per facilitare la creazione di nuovi prodotti.
PostgreSQL 9.5 se è importante.
sfondo
La tabella è l'aliquota fiscale. Una delle aliquote fiscali è l'impostazione predefinita ( standard
poiché l'impostazione predefinita è un comando Postgres). Quando viene aggiunto un nuovo prodotto, al prodotto viene applicata l'aliquota fiscale standard. In caso contrario standard
, il database deve eseguire un'ipotesi o tutti i tipi di controlli non necessari. La soluzione semplice, pensavo, era assicurarsi che ci fosse un standard
.
Per "impostazione predefinita" sopra, intendo per il livello di presentazione (UI). Esiste un'opzione utente per modificare l'aliquota fiscale predefinita. O ho bisogno di aggiungere ulteriori controlli per garantire che la GUI / utente non tenti di impostare tax_rate_id su NULL, oppure di impostare semplicemente un'aliquota fiscale predefinita.