Bir sütun var: standard BOOLEAN NOT NULL
Bir satır True ve diğer tüm Yanlışları uygulamak istiyorum. Bu kısıtlamaya bağlı olarak hiçbir FK veya başka bir şey değildir. Ben plpgsql ile başarabilirim biliyorum, ama bu bir balyoz gibi görünüyor. A CHECK
veya UNIQUE
kısıtlama gibi bir şeyi tercih ederim . Ne kadar basit o kadar iyi.
Bir satır True olmalıdır, hepsi False olamaz (bu nedenle eklenen ilk satır True olmalıdır).
Satırın güncellenmesi gerekecek, yani tüm satırlar önce False ve sonra bir satır True olarak ayarlanabileceğinden, güncellemeler yapılana kadar kısıtlamaları kontrol etmek için beklemek zorundayım.
Orada arasında bir FK olduğunu products.tax_rate_id
ve tax_rate.id
ancak yeni ürünler yaratma kolaylaştırmak için kullanıcı seçilebilir olduğu varsayılan veya standart vergi oranı ile hiçbir ilgisi yoktur ..
Önemli ise PostgreSQL 9.5.
Arka fon
Tablo vergi oranıdır. Vergi oranlarından biri varsayılan standard
değerdir ( varsayılan olarak Postgres komutu olduğundan). Yeni bir ürün eklendiğinde, ürüne standart vergi oranı uygulanır. Hayır standard
ise, veritabanı ya bir tahmin yapmalı ya da her türlü gereksiz kontrol yapmalıdır. Basit çözüm, diye düşündüm, bir tane olduğundan emin olmaktı standard
.
Yukarıdaki "varsayılan" ile, sunum katmanı (UI) için kastediyorum. Varsayılan vergi oranını değiştirmek için bir kullanıcı seçeneği vardır. Ben ya GUI / kullanıcı tax_rate_id NULL ayarlamak için denemek için değil, ya da sadece varsayılan bir vergi oranı ayarlamak için ekstra kontrol eklemek gerekir.