Saya punya kolom: standard BOOLEAN NOT NULL
Saya ingin menegakkan satu baris Benar, dan semua lainnya Salah. Tidak ada FK atau apa pun tergantung pada kendala ini. Saya tahu saya bisa mencapainya dengan plpgsql, tapi ini sepertinya palu godam. Saya lebih suka sesuatu seperti CHECK
atau UNIQUE
kendala. Semakin sederhana semakin baik.
Satu baris harus Benar, semuanya tidak bisa Salah (jadi baris pertama yang dimasukkan harus Benar).
Baris perlu diperbarui, yang berarti saya harus menunggu untuk memeriksa batasan sampai pembaruan selesai, karena semua baris mungkin ditetapkan Salah dulu dan satu baris Benar setelahnya.
Ada FK antara products.tax_rate_id
dan tax_rate.id
, tetapi tidak ada hubungannya dengan tarif pajak standar atau standar, yang dapat dipilih pengguna untuk memudahkan menciptakan produk baru ..
PostgreSQL 9.5 jika itu penting.
Latar Belakang
Tabelnya adalah tarif pajak. Salah satu tarif pajak adalah default ( standard
karena default adalah perintah Postgres). Ketika produk baru ditambahkan, tarif pajak standar diterapkan ke produk. Jika tidak ada standard
, database harus melakukan tebakan atau semua jenis cek yang tidak diperlukan. Solusi sederhana, saya pikir, adalah untuk memastikan ada standard
.
Secara "default" di atas, maksud saya untuk lapisan presentasi (UI). Ada opsi pengguna untuk mengubah tarif pajak standar. Saya juga perlu menambahkan pemeriksaan tambahan untuk memastikan GUI / pengguna tidak mencoba untuk mengatur tax_rate_id ke NULL, atau kemudian hanya menetapkan tarif pajak default.