Il blog di Sandro Rizzetto

Cambiare nome al constraint della chiave primaria

 

Se si modifica il nome di una tabella alla quale abbiamo già assegnato la chiave primaria (PK, primary key) il constraint relativo a questa chiave rimarrà con il vecchio nome (es PK_oldName). E’ sufficiente usare un sp_rename per cambiarla. Con questo script possiamo cercare tutte le tabelle in cui non ci sia corrispondenza e generare i vari rename automaticamente.

WITH PKNames
AS (
SELECT name AS IndexName
,OBJECT_NAME(object_id) AS TableName
,OBJECT_SCHEMA_NAME(object_id) as SchemaName
,(SELECT '' + c.name
FROM sys.index_columns ic
INNER JOIN sys.columns c
ON ic.object_id = c.object_id
AND ic.index_column_id = c.column_id
WHERE ic.object_id = i.object_id
AND ic.index_id = i.index_id
AND ic.is_included_column = 0
ORDER BY ic.key_ordinal
FOR XML PATH('')) AS Columns
FROM sys.indexes i
WHERE i.is_primary_key = 1
)
SELECT 'EXEC sp_rename ''' + QUOTENAME(SchemaName) + '.' + QUOTENAME(IndexName) + ''', ''PK_' + TableName +''''
FROM PKNames
WHERE IndexName <> 'PK_' + TableName

 

Fonte: jason strate blog

Aggiungi Commento

Copyright © 1997-2017 Sandro Rizzetto | All Rights Reserved | Riproduzione delle fotografie vietata | Powered by me