Удалить ограничение для столбца, не зная имени ограничения - PullRequest
1 голос
/ 04 июля 2019

Я хотел бы снять ограничение на столбец в нескольких базах данных. Я не знаю точное название ограничения на столбец.

Можно ли удалить ограничение, не зная его имени.

Ex: ALTER TABLE TempTable DROP Ограничение, если существует на имя столбца

1 Ответ

1 голос
/ 04 июля 2019

вы можете получить информацию об ограничениях из таблицы, подобной этой

select t.Name as TableName,
       ccd.Name as ColumnName_default_constraint,
       dc.Name as default_constraint,
       ccc.Name as ColumnName_check_constraint,
       cc.Name as check_constraint
from   sys.tables t
  inner join sys.default_constraints dc on t.object_id = dc.parent_object_id
  inner join sys.check_constraints cc on t.object_id = cc.parent_object_id
  inner join sys.columns ccd on dc.parent_object_id = ccd.object_id 
                          and ccd.column_id = dc.parent_column_id
  inner join sys.columns ccc on cc.parent_object_id = ccc.object_id 
                          and ccc.column_id = cc.parent_column_id
where t.Name = 'your table name'
order by t.Name

из этого вы можете создавать сценарии, подобные этому

select 'alter table ' + t.Name +' drop constraint ' + dc.Name,
       'alter table ' + t.Name +' drop constraint ' + cc.Name
from   sys.tables t
  inner join sys.default_constraints dc on t.object_id = dc.parent_object_id
  inner join sys.check_constraints cc on t.object_id = cc.parent_object_id
where t.Name = 'your table name'
order by t.Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...