Maison > base de données > tutoriel mysql > Comment puis-je créer un index unique sur une colonne autorisant les valeurs NULL dans SQL Server ?

Comment puis-je créer un index unique sur une colonne autorisant les valeurs NULL dans SQL Server ?

Linda Hamilton
Libérer: 2025-01-04 22:57:41
original
429 Les gens l'ont consulté

How Can I Create a Unique Index on a Column Allowing NULL Values in SQL Server?

Création d'index uniques sur des colonnes nulles

Malgré l'idée fausse courante selon laquelle des contraintes uniques ne peuvent pas être appliquées aux colonnes autorisant des valeurs NULL, il existe effectivement des méthodes pour y parvenir dans SQL Server 2005.

Approche 1 : Afficher avec Index unique

L'approche mentionnée dans la question utilise une vue pour exclure les valeurs NULL et créer un index unique sur cette vue. Bien qu'efficace, cette solution ajoute de la complexité et augmente les performances.

Approche 2 : Index filtré (SQL Server 2008)

Dans SQL Server 2008, les index filtrés vous permettent de spécifier une clause WHERE lors de la création de l'index. Cela permet la création d'index uniques sur les colonnes pouvant contenir des valeurs NULL.

Syntaxe :

CREATE UNIQUE INDEX AK_MyTable_Column1 ON MyTable (Column1) WHERE Column1 IS NOT NULL
Copier après la connexion

Approche 3 : application basée sur des déclencheurs

Une autre alternative consiste à implémenter un déclencheur qui vérifie l'unicité chaque fois qu'une ligne est insérée ou mise à jour. Cependant, les déclencheurs peuvent avoir un impact sur les performances, en particulier sur les tables avec des taux d'insertion/mise à jour élevés.

Mise en œuvre :

CREATE TRIGGER MyTable_TRG_Unique ON MyTable
AFTER INSERT OR UPDATE
AS
BEGIN
  IF EXISTS(SELECT 1 FROM MyTable WHERE Column1 = (SELECT Column1 FROM INSERTED))
  BEGIN
    RAISERROR('Column1 must be unique.', 16, 1); -- Handle error as needed
  END
END
Copier après la connexion

Considérez les avantages et les inconvénients de chaque approche en fonction des exigences spécifiques et des contraintes de performances. de votre candidature.

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