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 CHECKveya UNIQUEkı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_idve tax_rate.idancak 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 standarddeğerdir ( varsayılan olarak Postgres komutu olduğundan). Yeni bir ürün eklendiğinde, ürüne standart vergi oranı uygulanır. Hayır standardise, 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.