Maison >base de données >tutoriel mysql >Comment les index filtrés peuvent-ils appliquer des contraintes conditionnelles uniques dans SQL Server ?
Contraintes conditionnelles uniques avec index filtrés dans SQL Server
La conception de bases de données nécessite parfois des contraintes conditionnelles uniques : l'unicité appliquée à un ensemble de colonnes uniquement lorsqu'une autre colonne remplit une condition spécifique. Ceci est courant lors de la gestion d’enregistrements actifs et inactifs, préservant ainsi l’intégrité des données. Les index filtrés de SQL Server offrent une solution efficace. Un index filtré crée un index unique sur le sous-ensemble de lignes d'une table, défini par un prédicat de filtre.
Mise en œuvre de l'unicité basée sur le statut de l'enregistrement
Imaginez un tableau avec des colonnes ID
, Name
et RecordStatus
. Nous avons besoin d'une contrainte unique sur (ID
, RecordStatus
) uniquement lorsque RecordStatus = 1
(enregistrements actifs). Un index filtré permet d'obtenir cela :
<code class="language-sql">CREATE UNIQUE INDEX MyIndex ON MyTable (ID) WHERE RecordStatus = 1;</code>
Cela garantit l'unicité de ID
uniquement lorsque RecordStatus
vaut 1, ce qui permet plusieurs enregistrements inactifs (RecordStatus = 2
) avec le même ID
.
Au-delà du statut d'enregistrement : unicité conditionnelle polyvalente
Les index filtrés ne se limitent pas au statut de l'enregistrement. Ils permettent un contrôle granulaire de l'unicité des données en fonction de divers critères, améliorant ainsi l'intégrité et les performances des données.
Avantages des index filtrés
Par rapport aux alternatives telles que les déclencheurs, les index filtrés offrent :
Résumé
Les index filtrés de SQL Server offrent un moyen robuste et efficace d'appliquer des contraintes conditionnelles uniques. Ils offrent un équilibre entre l'intégrité des données, les performances et l'optimisation du stockage.
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!