У меня есть колонка: standard BOOLEAN NOT NULL
Я хотел бы обеспечить один ряд True, а все остальные False. Это не FK или что-либо еще в зависимости от этого ограничения. Я знаю, что могу сделать это с помощью plpgsql, но это похоже на кувалду. Я предпочел бы что - то вроде CHECK
или UNIQUE
ограничения. Чем проще, тем лучше.
Одна строка должна быть True, они не могут быть ложными (поэтому первая вставленная строка должна быть True).
Строка должна быть обновлена, что означает, что мне нужно ждать, чтобы проверить ограничения, пока не будут выполнены обновления, поскольку все строки могут быть установлены в False в первую очередь, а одна строка в True после.
Существует FK между products.tax_rate_id
и tax_rate.id
, но это не имеет ничего общего с неисполнением или стандартной ставки налога, который выбирается пользователем , чтобы облегчить создание новых продуктов ..
PostgreSQL 9.5, если это имеет значение.
Фон
В таблице указана ставка налога. По умолчанию standard
используется одна из налоговых ставок ( поскольку по умолчанию используется команда Postgres). При добавлении нового продукта к нему применяется стандартная налоговая ставка. Если нет standard
, база данных должна либо сделать предположение, либо выполнить все виды ненужных проверок. Я подумал, что простым решением было убедиться, что оно есть standard
.
Под «по умолчанию» выше я подразумеваю уровень представления (UI). Существует пользовательская опция для изменения ставки налога по умолчанию. Мне нужно либо добавить дополнительные проверки, чтобы гарантировать, что GUI / пользователь не пытается установить tax_rate_id в NULL, либо просто установить ставку налога по умолчанию.