Maison > base de données > tutoriel mysql > Comment puis-je appliquer l'unicité conditionnelle dans SQL Server ?

Comment puis-je appliquer l'unicité conditionnelle dans SQL Server ?

Patricia Arquette
Libérer: 2025-01-10 08:17:40
original
424 Les gens l'ont consulté

How Can I Enforce Conditional Uniqueness in SQL Server?

Implémentation de contraintes conditionnelles uniques dans SQL Server

Les contraintes uniques de SQL Server empêchent les entrées en double dans les colonnes spécifiées. Mais comment appliquer l’unicité uniquement dans des conditions spécifiques ? La solution réside dans l'utilisation d'index filtrés.

Selon la documentation SQL Server, un index filtré est un index non clusterisé qui indexe uniquement un sous-ensemble de lignes de table, défini par un prédicat de filtre.

Cette fonctionnalité vous permet de combiner un index unique avec un filtre conditionnel pour appliquer l'unicité de manière sélective. Considérez un tableau :

<code class="language-sql">Table(ID, Name, RecordStatus)</code>
Copier après la connexion

RecordStatus peut être 1 (actif) ou 2 (supprimé). Pour garantir des valeurs ID uniques uniquement lorsque RecordStatus vaut 1, vous devez créer un index filtré :

<code class="language-sql">CREATE UNIQUE INDEX MyIndex
ON MyTable(ID)
WHERE RecordStatus = 1;</code>
Copier après la connexion

Cela applique l'unicité sur ID uniquement pour les enregistrements actifs (où RecordStatus = 1). Tenter d'insérer un doublon ID avec RecordStatus = 1 entraînera une erreur :

<code>Cannot insert duplicate key row in object 'MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
Copier après la connexion

Il est important de se rappeler que les index filtrés ont été introduits dans SQL Server 2008. Pour les versions antérieures (comme SQL Server 2005), des approches alternatives telles que les déclencheurs sont nécessaires pour obtenir l'unicité conditionnelle.

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