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 s'assurer qu'un seul enregistrement a isDefault = 1 par FormID dans une table SQL Server ?

Mary-Kate Olsen
Libérer: 2025-01-04 01:26:10
original
330 Les gens l'ont consulté

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

Garantir un enregistrement par défaut unique dans la table de base de données

Problème

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 ».

Solution : index filtré unique pour SQL Server 2008 ou supérieur

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

Considérez le tableau suivant structure :

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

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

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!

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