Maison >base de données >tutoriel mysql >Comment s'assurer qu'un seul enregistrement par défaut existe par identifiant unique dans SQL Server ?

Comment s'assurer qu'un seul enregistrement par défaut existe par identifiant unique dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 07:55:35317parcourir

How to Ensure Only One Default Record Exists per Unique Identifier in SQL Server?

Maintenir un enregistrement par défaut unique : une application de contrainte

Dans les systèmes de gestion de bases de données, garantir l'intégrité et la cohérence des données est crucial. Un tel scénario nécessite de limiter le nombre d'enregistrements marqués comme « par défaut » à un seul par ensemble de lignes identifiées par un identifiant unique. Comment y parvenir ?

Solution d'index filtré unique

Pour les versions SQL Server 2008 et supérieures, un index filtré unique offre une solution élégante. En créant un index filtré unique, comme indiqué ci-dessous :

CREATE UNIQUE INDEX IX_TableName_FormID_isDefault ON TableName(FormID) WHERE isDefault = 1

...nous garantissons qu'un seul enregistrement avec son indicateur de bit "isDefault" défini sur 1 peut être présent pour un FormID donné.

La structure de la table sous-jacente est représentée comme :

CREATE TABLE TableName(FormID INT NOT NULL, isDefault BIT NOT NULL)

Application de la Contrainte

Cette contrainte impose que toute tentative d'insertion de plusieurs enregistrements avec le même FormID et "isDefault" défini sur 1 déclenchera une erreur, citant la présence de valeurs de clé en double dans l'index unique. Par exemple, si plusieurs lignes sont insérées avec des FormID correspondants et des indicateurs "isDefault" définis sur 1, un message d'erreur sera généré :

Impossible d'insérer une ligne de clé en double dans l'objet 'dbo.TableName' avec un index unique 'IX_TableName_FormID_isDefault '. La valeur de clé en double est (1).

En employant cette technique, les administrateurs de bases de données peuvent efficacement maintenir l'intégrité de leurs données et garantir qu'un seul enregistrement est désigné comme enregistrement par défaut pour un ensemble de lignes donné.

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