Drop primary key using script in SQL Server database [duplicate]
preciso de largar a chave primária de uma tabela Student
numa base de dados do servidor SQL.
eu editei na tabela e o guião que recebi é
ALTER TABLE dbo.Student
DROP CONSTRAINT PK__Student__9CC368536561EF8B
mas quando executar este programa na pesquisa do servidor SQL navegador para largar a chave primária
mostra a mensagem
Para minha preocupação, acho que isto será gerado aleatoriamente. por favor, ajude-me a largar a restrição de chave primária usando script.Msg 3728, Nível 16, Estado 1, Linha 1
'PK__Student_ _ _ 9CC368536561EF8B' is not a constraint.
Msg 3727, Nível 16, Estado 0, Linha 1
obrigado antecipadamente
3 answers
Pode procurar o nome da restrição no sistema.tabela key_constraints:
SELECT name
FROM sys.key_constraints
WHERE [type] = 'PK'
AND [parent_object_id] = Object_id('dbo.Student');
Se você não se importa com o nome, mas simplesmente quer deixá-lo cair, você pode usar uma combinação deste e dinâmico sql:
DECLARE @table NVARCHAR(512), @sql NVARCHAR(MAX);
SELECT @table = N'dbo.Student';
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;
Este código é de Aaron Bertrand (Fonte ).
Basta clicar em
'Database' >tables>your table name>keys>copy the constraints like 'PK_ _ _ TableName_ _ 30242045'
E executar a pesquisa abaixo é:
Query:alter Table 'TableName' drop constraint PK__TableName__30242045
DECLARE @SQL VARCHAR(4000)
SET @SQL = 'ALTER TABLE dbo.Student DROP CONSTRAINT |ConstraintName| '
SET @SQL = REPLACE(@SQL, '|ConstraintName|', ( SELECT name
FROM sysobjects
WHERE xtype = 'PK'
AND parent_obj = OBJECT_ID('Student')))
EXEC (@SQL)