SQL Server 2005 удалить столбец с ограничениями - PullRequest
60 голосов
/ 24 ноября 2008

У меня есть столбец с ограничением «ПО УМОЛЧАНИЮ». Я хотел бы создать скрипт, который удаляет этот столбец.

Проблема в том, что он возвращает эту ошибку:

Msg 5074, Level 16, State 1, Line 1  
The object 'DF__PeriodSce__IsClo__4BCC3ABA' is dependent on column 'IsClosed'. 
Msg 4922, Level 16, State 9, Line 1 
ALTER TABLE DROP COLUMN IsClosed failed because one or more objects access this column.

Я не смог найти простой способ удаления столбца и всех связанных с ним ограничений (нашел только большие скрипты, которые смотрят в системную таблицу ... ДОЛЖЕН (!!) быть "хороший" способ сделать это. )

И так как имя ограничения DEFAULT было сгенерировано случайным образом, я не могу удалить его по имени.


Обновление :
Тип ограничения - "ПО УМОЛЧАНИЮ".

Я видел решения, которые вы все предложили, но я нахожу их все "грязными" ... Вам не кажется? Я не знаю, с Oracle или MySQL, но можно сделать что-то вроде:

DROP COLUMN xxx CASCADE CONSTRAINTS 

И он отбрасывает все связанные ограничения ... Или, по крайней мере, он автоматически удаляет ограничения, сопоставленные с этим столбцом (по крайней мере, ограничения CHECK!)

Нет ли в MSSQL ничего подобного?

Ответы [ 13 ]

0 голосов
/ 19 июля 2011

Я только что столкнулся с этим. Вы можете удалить столбец с ограничениями, используя конструкторское представление MSSQL. Щелкните правой кнопкой мыши по столбцу, который вы хотите удалить (с ограничениями или без), и вы можете удалить его без проблем. Ха .. Я выглядела уже глупо.

0 голосов
/ 12 декабря 2008

Просто сгенерируйте сценарии для таблицы. Там вы можете найти название всех ограничений.

0 голосов
/ 24 ноября 2008

Что вы имеете в виду случайно сгенерированный? Вы можете посмотреть ограничения на конкретный столбец в Management Studio или через представление sys.tables и узнать, каковы имена.

Затем вы можете изменить свой сценарий, чтобы отбрасывать ограничения до удаления столбца. Какой тип ограничения это? Если это ограничение внешнего ключа, убедитесь, что это не нарушит целостность данных в вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...