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
Libérer: 2025-01-01 03:20:10
original
168 Les gens l'ont consulté

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
Copier après la connexion

où la table est définie comme suit :

CREATE TABLE TableName(
    FormID INT NOT NULL,
    isDefault BIT NOT NULL
)
Copier après la connexion

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).
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal