/ / TSQL Alter PRIMARY KEY Cluster Index MSSQL2008r2 - tsql, sql-server-2008-r2, indexovanie, primárny kľúč, klastrovaný index

TSQL Alter PRIMÁRNY KEY Index klastrov MSSQL2008r2 - tsql, sql-server-2008-r2, indexovanie, primárny kľúč, klastrovaný index

je možné ALTER PRIMARY KEY CLUSTERED index na existujúcej tabuľke bez straty dát?

Ak áno, aký je príkaz ALTER?

EDIT Chcem pridať ďalší stĺpec do PRIMARY KEY CLUSTERED Index

Vďaka

odpovede:

1 pre odpoveď č. 1

Tu je to, čo som urobil v minulosti na zmenu primárneho kľúča v tabuľke:

BEGIN TRANSACTION doStuff

DECLARE @isValid bit
SET     @isValid = 1

DECLARE @pkName varchar(50)
SET     @pkName = (
SELECT TOP 1 name
FROM sys.key_constraints
WHERE type ="pk"
AND OBJECT_NAME(parent_object_id) = N"TableName"
)

DECLARE @sql nvarchar(2000)
SET @sql = N"
ALTER TABLE dbo.TableName
DROP CONSTRAINT " + @pkName

EXEC (@sql)

IF (@@ERROR <> 0)
BEGIN
PRINT "Error deleting primary key"
SET @isValid = 0
END

ALTER TABLE dbo.TableName
ADD PRIMARY KEY (primary key columns separated by comma)

IF (@@ERROR <> 0)
BEGIN
PRINT "Error creating primary key"
SET @isValid = 0
END

IF (@isValid = 1)
BEGIN
PRINT "Commit"
COMMIT TRANSACTION doStuff
END
ELSE
BEGIN
PRINT "Rollback"
ROLLBACK TRANSACTION doStuff
END

Upozornenie: Najlepší spôsob, ako zmeniť klastrovaný index (PK) v SQL 2005 toto bude preorientovať údaje v tabuľke počas operácie, takže v závislosti od veľkosti tabuľky by to mohlo trvať značné množstvo času.