2010-07-28 3 views
15

j'ai la clé suivante:Comment faire pour supprimer une propriété en cluster mais conserver la clé primaire dans une table. SQL Server 2005

ALTER TABLE dbo.Table ADD CONSTRAINT PK_ID PRIMARY KEY CLUSTERED 
(
ID ASC 
) 

index donc j'ai regroupés et clé primaire sur la colonne ID. Maintenant, je dois supprimer l'index cluster (je veux créer un nouvel index clusterisé sur une autre colonne), mais conserver la clé primaire. Est-ce possible?

+0

Je suis d'accord avec @Demas mais quelle édition de SQL Server êtes-vous? (par exemple Enterprise/Standard). Avez-vous à vous soucier des utilisateurs simultanés? Avez-vous d'autres index non groupés sur la table? –

Répondre

17

Il est impossible dans une déclaration, mais parce que DDL est transactionnel MSSQL, vous pouvez tout simplement faire tout à l'intérieur d'une transaction pour empêcher d'autres sessions accès à la table alors qu'il n'a pas de clé primaire:

begin tran 
alter table dbo.[Table] drop constraint pk_id 
alter table dbo.[Table] add constraint pk_id primary key nonclustered (id) 
commit tran 
+0

solution géniale !!! Merci beaucoup – skaeff

3

Ce n'est pas possible, car l'index est une implémentation physique de la contrainte.

Questions connexes