Mam kolumnę: standard BOOLEAN NOT NULL
Chciałbym egzekwować jeden wiersz Prawda, a wszystkie inne Fałsz. Nie ma FK ani nic innego w zależności od tego ograniczenia. Wiem, że mogę to zrobić przy pomocy PLpgSQL, ale wydaje się to młotem. Wolałbym coś w rodzaju ograniczenia CHECK
lub UNIQUE
ograniczenia. Im prościej, tym lepiej.
Jeden wiersz musi być prawdziwy, nie wszystkie mogą być fałszywe (więc pierwszy wstawiony wiersz musiałby być prawdziwy).
Wiersz będzie musiał zostać zaktualizowany, co oznacza, że muszę czekać, aby sprawdzić ograniczenia, aż aktualizacje zostaną wykonane, ponieważ wszystkie wiersze mogą być ustawione na False pierwszy, a jeden wiersz True później.
Istnieje FK pomiędzy products.tax_rate_id
i tax_rate.id
, ale nie ma to nic wspólnego z domyślną lub standardową stawką podatkową, którą użytkownik może wybrać, aby ułatwić tworzenie nowych produktów.
PostgreSQL 9.5, jeśli ma to znaczenie.
tło
Tabela to stawka podatku. Jedna ze stawek podatkowych jest domyślna ( standard
ponieważ domyślnie jest to polecenie Postgres). Po dodaniu nowego produktu do produktu stosuje się standardową stawkę podatku. Jeśli nie standard
, baza danych musi zgadnąć lub wykonać wszelkiego rodzaju niepotrzebne kontrole. Pomyślałem, że najprostszym rozwiązaniem jest upewnienie się, że istnieje standard
.
Przez „domyślny” powyżej rozumiem warstwę prezentacji (UI). Istnieje możliwość zmiany domyślnej stawki podatkowej przez użytkownika. Muszę albo dodać dodatkowe kontrole, aby upewnić się, że GUI / użytkownik nie próbuje ustawić tax_rate_id na NULL, lub po prostu ustawić domyślną stawkę podatku.