У меня есть таблица со столбцом, подобным этому, в настоящее время:
name NVARCHAR(128) NOT NULL DEFAULT ''
Я изменяю столбец, подобный этому, чтобы сделать его нулевым:
ALTER TABLE mytable ALTER COLUMN name NVARCHAR(128) NULL
Однако ограничение по умолчанию, названное 'DF__mytable__datab__7DE4B36' в одном экземпляре таблицы, все еще остается. Я знаю, что этого можно было избежать, если оригинальный автор назвал ограничение. У меня есть несколько примеров этих таблиц, но я не хочу вручную удалять каждое ограничение в каждой таблице. Какой самый простой и элегантный способ сбросить это ограничение по умолчанию для столбца на Sql Server, который я могу единообразно применять ко всем экземплярам этой таблицы?
ИЗМЕНИТЬ
Это script, который я использовал, используя
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
Другой script, который можно использовать для его выполнения, можно найти здесь: Как удалить ограничение по умолчанию SQL, не зная его имени?
Спасибо, Mohammed