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
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
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!