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

StackOverflow https://stackoverflow.com/questions/3804663

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top