Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ändern Sie einen Primärschlüssel von Nonclustered in Clustered

1) Löschen Sie zuerst den vorhandenen Clustered-Index (IX_TableX_FieldB):

   DROP INDEX TableX.IX_TableX_FieldB

2) Erstellen Sie eine (vorübergehende) UNIQUE-Einschränkung für die eindeutigen Felder, auf die im Primärschlüssel verwiesen wird

    ALTER TABLE TableX
    ADD CONSTRAINT UQ_TableX UNIQUE(FieldA)

3) Lassen Sie den PRIMÄRSCHLÜSSEL fallen

    ALTER TABLE TableX
    DROP CONSTRAINT PK_TableX

4) Erstellen Sie den PRIMARY KEY als CLUSTERED

neu
   ALTER TABLE TableX
   ADD CONSTRAINT PK_TableX PRIMARY KEY CLUSTERED(FieldA)

5) Löschen Sie die temporäre UNIQUE-Einschränkung

   ALTER TABLE TableX
   DROP CONSTRAINT UQ_TableX

6) Fügen Sie IX_TableX_FieldB wieder als NONCLUSTERED hinzu

   CREATE NONCLUSTERED INDEX IX_TableX_FieldB ON TableX(FieldB)