J'ai une colonne: standard BOOLEAN NOT NULL
Je voudrais appliquer une ligne True et toutes les autres False. Il n'y a pas de FK ou quoi que ce soit d'autre selon cette contrainte. Je sais que je peux l'accomplir avec plpgsql, mais cela ressemble à un marteau. Je préférerais quelque chose comme une contrainte CHECK
ou UNIQUE
. Plus c'est simple, mieux c'est.
Une ligne doit être True, elles ne peuvent pas toutes être False (donc la première ligne insérée doit être True).
La ligne devra être mise à jour, ce qui signifie que je dois attendre pour vérifier les contraintes jusqu'à ce que les mises à jour soient terminées, car toutes les lignes peuvent être définies sur False en premier et une ligne sur True après.
Il existe un FK entre products.tax_rate_id
et tax_rate.id
, mais cela n'a rien à voir avec le taux de taxe par défaut ou standard, qui est sélectionnable par l'utilisateur pour faciliter la création de nouveaux produits.
PostgreSQL 9.5 si cela est important.
Contexte
Le tableau est le taux d'imposition. L'un des taux de taxe est la valeur par défaut ( standard
car la valeur par défaut est une commande Postgres). Lorsqu'un nouveau produit est ajouté, le taux de taxe standard est appliqué au produit. S'il n'y en a pas standard
, la base de données doit faire une supposition ou toutes sortes de vérifications inutiles. La solution simple, je pensais, était de s'assurer qu'il y avait un standard
.
Par «par défaut» ci-dessus, je veux dire pour la couche de présentation (UI). Il existe une option utilisateur pour modifier le taux de taxe par défaut. Je dois soit ajouter des vérifications supplémentaires pour m'assurer que l'interface graphique / l'utilisateur n'essaie pas de définir tax_rate_id sur NULL, soit simplement définir un taux de taxe par défaut.