Maison >base de données >tutoriel mysql >Comment puis-je implémenter des contraintes conditionnelles uniques dans SQL Server 2005 ?
SQL Server 2005 : implémentation de l'unicité conditionnelle pour les sous-ensembles de colonnes
Créer des contraintes uniques qui s'appliquent uniquement dans des conditions spécifiques dans SQL Server 2005 présente un défi. Même si les déclencheurs offrent une solution, ils peuvent avoir un impact sur les performances. Une approche plus efficace utilise des index filtrés.
Index filtrés : une solution dynamique pour les contraintes conditionnelles
Les index filtrés permettent l'indexation de sous-ensembles de données spécifiques, fournissant ainsi un mécanisme puissant pour implémenter des contraintes conditionnelles via des prédicats de filtre.
Création d'une contrainte unique conditionnelle à l'aide d'un index filtré
L'instruction T-SQL suivante montre comment créer un index unique avec un filtre :
<code class="language-sql">CREATE UNIQUE INDEX MyIndex ON MyTable (ID) WHERE RecordStatus = 1;</code>
Cela crée une contrainte d'unicité sur la colonne ID
, mais uniquement lorsque RecordStatus
vaut 1. Toute tentative de violer cette unicité conditionnelle générera une erreur.
Exemple de message d'erreur :
Tenter d'insérer une valeur ID
en double lorsque RecordStatus
est 1 entraînera :
<code>Msg 2601, Level 14, State 1, Line 13 Cannot insert duplicate key row in object 'dbo.MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
Résumé
Les index filtrés offrent une méthode efficace et élégante pour établir des contraintes conditionnelles uniques dans SQL Server 2005, évitant ainsi la surcharge de performances souvent associée aux solutions basées sur des déclencheurs. L'utilisation de prédicats de filtre permet un contrôle dynamique de l'unicité au sein de sous-ensembles de données spécifiques.
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!