Elimine a restrição padrão em uma coluna no TSQL
Eu tenho uma tabela com uma coluna como esta que está atualmente ao vivo:
name NVARCHAR(128) NOT NULL DEFAULT ''
Estou alterando a coluna assim para torná-la anulável:
ALTER TABLE mytable ALTER COLUMN name NVARCHAR(128) NULL
No entanto, a restrição padrão, denominada 'DF__mytable__datab__7DE4B36' em uma instância da tabela, ainda permanece. Eu sei que isso poderia ter sido evitado se o autor original nomeasse a restrição. Eu tenho várias instâncias dessas tabelas, mas não quero excluir manualmente todas as restrições em todas as tabelas que tenho. Qual é a maneira mais fácil e elegante de eliminar essa restrição padrão em uma coluna no Sql Server que posso aplicar uniformemente a todas as instâncias dessa tabela?
EDITAREste é o script que acabei usando:
DECLARE @table_id AS INT
DECLARE @name_column_id AS INT
DECLARE @sql nvarchar(255)
-- Find table id
SET @table_id = OBJECT_ID('mytable')
-- Find name column id
SELECT @name_column_id = column_id
FROM sys.columns
WHERE object_id = @table_id
AND name = 'name'
-- Remove default constraint from name column
SELECT @sql = 'ALTER TABLE mytable DROP CONSTRAINT ' + D.name
FROM sys.default_constraints AS D
WHERE D.parent_object_id = @table_id
AND D.parent_column_id = @name_column_id
EXECUTE sp_executesql @sql
Outro script que pode ser usado para realizar isso pode ser encontrado aqui:Como eliminar a restrição padrão do SQL sem saber seu nome?
Obrigado!