У мене стовпець: standard BOOLEAN NOT NULL
Я хотів би застосувати один ряд True, а всі інші False. Залежно від цього обмеження немає ФК або нічого іншого. Я знаю, що можу досягти цього за допомогою plpgsql, але це здається кувалдою. Я б хотів щось подібне CHECK
чи UNIQUE
обмеження. Чим простіше, тим краще.
Один рядок повинен бути True, вони не можуть бути помилковими (тому перший рядок, який вставив, повинен бути True).
Рядок потрібно буде оновити, що означає, що мені доведеться чекати, щоб перевірити обмеження, доки не буде зроблено оновлення, оскільки всі рядки можуть бути встановлені помилковими першими, а один рядок True після цього.
Існує FK між products.tax_rate_id
і tax_rate.id
, але це не має нічого спільного з типовою або стандартною ставкою податку, яку обирає користувач, щоб полегшити створення нових продуктів.
PostgreSQL 9.5, якщо це має значення.
Фон
Таблиця - ставка податку. Однією із ставок податку є дефолт ( standard
оскільки за замовчуванням - це команда Postgres). Коли додається новий продукт, до товару застосовується стандартна ставка податку. Якщо немає standard
, база даних повинна або робити здогадки, або всілякі зайві перевірки. Просте рішення, я думав, було переконатися в наявності standard
.
Під "за замовчуванням" вище я маю на увазі для шару презентації (UI). Існує варіант користувача для зміни ставки податку за замовчуванням. Мені або потрібно додати додаткові чеки, щоб переконатися, що GUI / користувач не намагається встановити tax_rate_id на NULL, а потім просто встановити ставку податку за замовчуванням.