Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Trovare al volo un vincolo di chiave primaria in SQL Server 2005

Sebbene la procedura consigliata tipica sia quella di nominare sempre in modo esplicito i tuoi vincoli, puoi ottenerli dinamicamente dalle viste del catalogo:

DECLARE @table NVARCHAR(512), @sql NVARCHAR(MAX);

SELECT @table = N'dbo.PS_userVariables';

SELECT @sql = 'ALTER TABLE ' + @table 
    + ' DROP CONSTRAINT ' + name + ';'
    FROM sys.key_constraints
    WHERE [type] = 'PK'
    AND [parent_object_id] = OBJECT_ID(@table);

EXEC sp_executeSQL @sql;

ALTER TABLE dbo.PS_userVariables ADD CONSTRAINT ...