ฉันมีคอลัมน์: standard BOOLEAN NOT NULL
ฉันต้องการบังคับใช้หนึ่งแถวจริงและอื่น ๆ ทั้งหมดเป็นเท็จ ไม่มีของ FK หรือสิ่งอื่นใดขึ้นอยู่กับข้อ จำกัด นี้ ฉันรู้ว่าฉันสามารถทำได้ด้วย plpgsql แต่ดูเหมือนว่าค้อนขนาดใหญ่ ฉันต้องการบางสิ่งบางอย่างเช่นCHECK
หรือUNIQUE
ข้อ จำกัด ง่ายกว่าดีกว่า
แถวหนึ่งต้องเป็นจริงพวกเขาไม่สามารถเป็นเท็จได้ทั้งหมด (ดังนั้นแถวแรกที่แทรกจะต้องเป็นจริง)
แถวจะต้องได้รับการอัปเดตซึ่งหมายความว่าฉันต้องรอตรวจสอบข้อ จำกัด จนกว่าการอัปเดตจะเสร็จสิ้นเนื่องจากแถวทั้งหมดอาจถูกตั้งค่าเป็นเท็จก่อนและหนึ่งแถวจริงหลังจากนั้น
มี FK ระหว่างproducts.tax_rate_id
และtax_rate.id
แต่ไม่มีอะไรเกี่ยวข้องกับอัตราภาษีเริ่มต้นหรือมาตรฐานซึ่งผู้ใช้สามารถเลือกเพื่อสร้างผลิตภัณฑ์ใหม่ได้อย่างง่ายดาย ..
PostgreSQL 9.5 ถ้าเป็นเรื่องสำคัญ
พื้นหลัง
ตารางคืออัตราภาษี อัตราภาษีอย่างใดอย่างหนึ่งคือค่าเริ่มต้น ( standard
เนื่องจากค่าเริ่มต้นคือคำสั่ง Postgres) เมื่อมีการเพิ่มผลิตภัณฑ์ใหม่อัตราภาษีมาตรฐานจะถูกนำไปใช้กับผลิตภัณฑ์ หากไม่มีstandard
อยู่ฐานข้อมูลต้องทำการเดาหรือเช็คที่ไม่จำเป็นทุกชนิด standard
ทางออกที่ง่ายผมคิดว่าคือการทำให้แน่ใจว่ามี
ตามค่าเริ่มต้น "" ด้านบนฉันหมายถึงเลเยอร์การนำเสนอ (UI) มีตัวเลือกผู้ใช้สำหรับการเปลี่ยนแปลงอัตราภาษีเริ่มต้น ฉันต้องเพิ่มการตรวจสอบพิเศษเพื่อให้แน่ใจว่า GUI / ผู้ใช้ไม่พยายามตั้งค่า tax_rate_id เป็น NULL หรือเพียงแค่ตั้งอัตราภาษีเริ่มต้น