Удалить ограничение по умолчанию для столбца в TSQL

У меня есть таблица с таким столбцом, который в настоящее время активен:

name NVARCHAR(128) NOT NULL DEFAULT ''

Я изменяю такой столбец, чтобы сделать его обнуляемым:

ALTER TABLE  mytable ALTER COLUMN name NVARCHAR(128) NULL

Однако ограничение по умолчанию, с именем 'DF__mytable__datab__7DE4B36' в одном экземпляре таблицы все еще остается. Я знаю, что этого можно было бы избежать, если бы первоначальный автор назвал ограничение. У меня есть несколько экземпляров этих таблиц, но я не хочу вручную удалять каждое ограничение в каждой таблице, которая у меня есть. Каков самый простой и элегантный способ удаления этого ограничения по умолчанию для столбца в Sql Server, который я могу единообразно применить к каждому экземпляру этой таблицы?

РЕДАКТИРОВАТЬ

Вот сценарий, который я в итоге использовал:

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

Другой сценарий, который можно использовать для достижения этой цели, можно найти здесь: Как удалить ограничение SQL по умолчанию, не зная его имени?

Спасибо!

39
задан Alfabravo 8 March 2018 в 23:25
поделиться