Как удалить поле из таблицы SQLServer2005

Я пробовал это:

ALTER TABLE My.Table DROP MyField

и получил эту ошибку:

-MyField не является ограничением.

-Не удалось сбросить ограничение. См. Предыдущие ошибки.

В таблице всего одна строка данных, и поле только что добавлено.

Обновлено: Просто чтобы продолжить, sql действительно отсутствовал COLUMN. Теперь я получаю еще более серьезные ошибки:

  • Объект some_object__somenumbers зависит от столбца MyField
  • ALTER TABLE DROP COLUMN MyField не удалось, потому что один или несколько объектов обращаются к этому столбцу.

Обновлено:

ALTER TABLE TableName DROP Constraint ConstraintName

работал, после этого я смог использовать предыдущий код для удаления столбца. Спасибо вам обоим.

Вы отметили этот mysql, но вопрос говорит о SQLServer 2005. Не могли бы вы уточнить.

Lance Roberts 30.10.2008 20:52

Моя ошибка, должно быть mssql, но кто-то его уже обновил.

Maciej 30.10.2008 20:56
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
5
2
7 575
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я думаю, вам просто не хватает ключевого слова COLUMN:

ALTER TABLE TableName DROP COLUMN ColumnName

Вам также необходимо убедиться, что любое ограничение, зависящее от ColumnName, сначала отбрасывается.

Вы можете сделать это:

ALTER TABLE TableName DROP ConstraintName

Для каждого ограничения, которое у вас есть.

Если у вас есть индексы на основе столбца, вам также нужно сначала удалить эти индексы.

DROP INDEX TableName.IndexName
Ответ принят как подходящий

Брайан решил вашу исходную проблему - для вашей новой проблемы (объект some_object__somenumbers зависит от столбца MyField) это означает, что у вас проблема с зависимостью. Что-то вроде индекса, ссылки на внешний ключ, значения по умолчанию и т. д. Чтобы отменить ограничение, используйте:

ALTER TABLE TableName DROP ConstraintName

Кроме того, вам нужно будет сбросить все ограничения, зависящие от этого столбца, прежде чем он позволит вам удалить сам столбец.

ALTER TABLE TABLE_NAME ADD COLUMN SR_NO INTEGER(10)NOT NULL;

Другие вопросы по теме