Maison >base de données >tutoriel mysql >Comment s'assurer qu'un seul enregistrement a isDefault = 1 par FormID dans une table SQL Server ?
Comment une contrainte peut-elle être implémentée pour restreindre une table de base de données de telle sorte qu'un seul enregistrement puisse posséder une valeur de champ "isDefault" spécifique de 1 ? La contrainte s'applique à un sous-ensemble d'enregistrements identifiés par un champ « FormID ».
SQL Server 2008 et supérieur fournit une solution utilisant un filtre unique index :
CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1
Considérez le tableau suivant structure :
CREATE TABLE TableName( FormID INT NOT NULL, isDefault BIT NOT NULL )
L'insertion de plusieurs enregistrements avec les mêmes "FormID" et "isDefault" que 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).
Cette erreur applique efficacement la contrainte, garantissant un seul enregistrement par "FormID" peut avoir "isDefault" défini sur 1.
(Source : https://technet.microsoft.com/en-us/library/cc280372.aspx)
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!