Удаляем default-ограничение (constraint) в Transact Sql

Сгенерировать sql код для удаления default-ограничения не зная его имени, но зная таблицу и колонку, можно следующей командой (вынесена в отдельную функцию):

create
 -- alter
function dbo.create_delete_default_command(@table_name varchar(256), @col_name varchar(256))
returns varchar(1000)
as
begin
declare @delete_command  varchar(1000)

select @delete_command = 'ALTER TABLE ' + @table_name + ' drop constraint ' + defcon.name
from sys.tables    
join    sys.default_constraints defcon on defcon.parent_object_id = sys.tables.object_id  
join    sys.columns as scol on scol.object_id = sys.tables.object_id  and scol.column_id = defcon.parent_column_id
where sys.tables.name = @table_name and scol.name = @col_name

return @delete_command
end 

Использование функции

select dbo.create_delete_default_command('TEST_TABLE', 'TEST_COLUMN')

В принципе можно удалять ограничение сразу

execute (@delete_command)

How to drop SQL default constraint without knowing its name?


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>