SQL Server 2008: les contraintes de vérification garantit qu'une seule valeur dans toutes les lignes est réglé sur 1 et d'autres sont 0
-
25-09-2019 - |
Question
Il est nécessaire de construire la contrainte sur la colonne qui garantit qu'une seule valeur dans toutes les lignes est 1 et tous les autres sont 0.
Solution avec des déclencheurs existe mais je voudrais avoir quelque chose construit.
est telle chose possible?
La solution
Modifier
En fait, je viens de remarquer que vous êtes sur SQL Server 2008, vous pouvez utiliser un index filtré pour cette
CREATE UNIQUE NONCLUSTERED INDEX UIX ON YourTable (col) where col = 1
Réponse originale
serait sans doute La meilleure façon de stocker celui-pk spécial dans une table d'une ligne distincte. Le plus d'un aspect de la ligne peut être exécutée avec des contraintes de contrôle.
CREATE TABLE OneRowTable
(
lock CHAR(1) DEFAULT 'X' NOT NULL PRIMARY KEY CHECK (lock = 'X'),
OtherTablePK int
);
Sinon, vous en supposant pourrait avoir un champ id composé d'entiers positifs que vous pouvez ajouter une colonne calculée avec la définition suivante
case when col=1 then -1 else id end
et ajouter une contrainte unique à cette question.