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

- [MVC] Plusieurs verbes pour une seule méthode du controller par Blog de Jérémy Jeanson le il y a 21 heures et 54 minutes

- SPS Paris 2015 – Back from MS Ignite par Le blog de Patrick [MVP Office 365] le 05-26-2015, 16:04

- Windows 10 IOT– exploitez vos capteurs en tout genre ! par Blog de Daniel TIZON [daniel] le 05-26-2015, 08:06

- SharePoint Saturday Paris 2015 c’est le 30 mai ! par Le blog de Patrick [MVP Office 365] le 05-25-2015, 21:07

- Configurer un écran 5 pouces 800x480 pour Raspberry Pi2 sous Windows 10 IOT par Blog de Daniel TIZON [daniel] le 05-22-2015, 07:52

- Office 365 : Sway est disponible en preview par Le petit blog de Pierre / Pierre's little blog le 05-21-2015, 22:24

- Première installation de Raspbian sur RASPBERRY Pi 2 par Blog de Daniel TIZON [daniel] le 05-14-2015, 22:17

- Mobile Day : c’est le 25 et c’est chez Microsoft! par Fathi Bellahcene le 05-13-2015, 23:48

- TFS 2013 : Migration d’une ferme TFS 2010 vers 2013 sans upgrade par Blog Technique de Romelard Fabrice le 05-01-2015, 16:28

- [ #SharePoint 2016 ] frappe à nos portes ! (1/2) par Le blog de Patrick [MVP Office 365] le 04-19-2015, 23:21