Contrainte pour un seul enregistrement marqué par défaut
Comment définir une contrainte sur une table afin qu'un seul des records a son champ de bits isDefault défini sur 1 ?
Solution : utiliser un unique Index filtré
Pour SQL Server 2008 ou version ultérieure, un index filtré unique peut être utilisé :
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
où la table est définie comme suit :
CREATE TABLE TableName( FormID INT NOT NULL, isDefault BIT NOT NULL )
L'insertion de plusieurs lignes avec le même FormID et isDefault défini sur 1 entraînera l'erreur suivante :
Cannot insert duplicate key row in object 'dbo.TableName' with unique index 'IX_TableName_FormID_isDefault'. The duplicate key value is (1).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!