Maison >base de données >tutoriel mysql >Comment s'assurer qu'un seul enregistrement a isDefault = 1 dans une table SQL Server ?

Comment s'assurer qu'un seul enregistrement a isDefault = 1 dans une table SQL Server ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-01 03:20:10209parcourir

How to Ensure Only One Record Has isDefault = 1 in a SQL Server Table?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn