Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Modifier l’index d’une contrainte sans la supprimer

Le moteur de base de données, prend certaines libertés comme celle d'ajouter un index systématiquement aux contraintes de types UNIQUE ou PRIMARY KEY ce qui lui permet de d'assurer que les valeurs contenues dans ces dernières sont bien uniques.

Mais que ce passe t'il le jour où vous souhaitez modifier le type d'index d'une contrainte (le changer de Clustered à NonClustered par exemple) sans toucher à la contrainte. Il est vrai que supprimer la contrainte serait la solution de facilité mais dans le cas où celle-ci est liée à un grand nombre d'autres tables par des clefs étrangères cela se révèlera être un enfer.

Il y a une solution plus simple :

1. On cherche le nom de l'index qui est créée par notre contrainte (c'est là qu'on se rend compte que plus facile de les nommer soit même)

SELECT name FROM sys.indexes
WHERE is_primary_key = 1 AND object_id = OBJECT_ID('dbo.MaTable')

Les vues systèmes utilisées existent depuis SQL Server 2005 uniquement.
On change is_primary_key par is_unique_constraint en function de ce que l'on souhaite modifier.

2. On écrase cet index avec la syntaxe appropriée (syntaxe valable depuis SQL Server 2000)

-- Remplacer par le nom de l'index trouvé si dessus
CREATE UNIQUE NONCLUSTERED INDEX PK__dbo_MaTable__6F7AF90B ON dbo.MaTable(Id)
WITH (DROP_EXISTING = ON)

La clause UNIQUE est indispensable. Ici j'ai pris le cas où je souhaite transformer mon index de celf primaire de Clustered (valeur par défaut pour une clef primaire) en NonClustered. Le DROP_EXISTING indique au moteur que ce n'est pas une création d'index en tant que tel mais que l'on souhaite remplacer cet index.

Le tour est joué, le nouvel index est créé !

Bonne indexation…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié mardi 3 février 2009 10:33 par christian
Classé sous :

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- //Lean/ - Apprendre à faire des Apps Windows universelles par Blog de Jérémy Jeanson le il y a 2 heures et 33 minutes

- Une culture de la donnée pour tous… par Le blog de Patrick [MVP SharePoint] le il y a 4 heures et 30 minutes

- [ SharePoint Summit 2014 ] L’utilisation de SharePoint 2013 pour la mise en place d’un site Internet Grand Public par Le blog de Patrick [MVP SharePoint] le il y a 18 heures et 38 minutes

- [ SharePoint Summit Montréal 2014 ] Mes présentations sont en ligne par Le blog de Patrick [MVP SharePoint] le il y a 21 heures et 14 minutes

- [ SharePoint Summit Montréal 2014 ] L'intelligence d'affaire dans O365 : enfin facile et économique grâce aux dernières évolution de la Power BI par Le blog de Patrick [MVP SharePoint] le il y a 22 heures et 22 minutes

- [ SharePoint Summit Montréal 2014 ] Kit de démarrage rapide pour de la collaboration en mode Intranet avec SharePoint par Le blog de Patrick [MVP SharePoint] le 04-14-2014, 18:40

- [ SharePoint Summit Montréal 2014 ] Une conférence francophone majeure autour de SharePoint par Le blog de Patrick [MVP SharePoint] le 04-14-2014, 15:52

- [status.modern.ie] Tout savoir sur les futures versions d'Internet Explorer par Philippe Didiergeorges Aka Philess le 04-08-2014, 11:07

- Problèmes de compatibilité avec Visual Studio 2013 ? par Blog de Jérémy Jeanson le 04-07-2014, 22:04

- [ #Yammer ] Comment basculer l’interface en français ? par Le blog de Patrick [MVP SharePoint] le 04-06-2014, 15:29