Как удалить столбец из существующей таблицы?
У меня есть таблица MEN
с Fname
иLname
Мне нужно удалить Lname
Как это сделать?
sql-server
Гали
источник
источник
Ответы:
источник
Общий:
В твоем случае:
источник
Ваш пример прост и не требует каких-либо дополнительных изменений таблицы, но, вообще говоря, это не так тривиально.
Если на этот столбец ссылаются другие таблицы, вам нужно выяснить, что делать с другими таблицами / столбцами. Один из вариантов - удалить внешние ключи и сохранить данные в других таблицах.
Другой вариант - найти все ссылающиеся столбцы и удалить их, если они больше не нужны.
В таких случаях реальной проблемой является поиск всех внешних ключей. Вы можете сделать это, запросив системные таблицы или используя сторонние инструменты, такие как ApexSQL Search (бесплатно) или Red Gate Dependency tracker (премиум, но больше функций). Там целая тема по внешним ключам здесь
источник
Это правильный ответ:
Но ... если
CONSTRAINT
существует наCOLUMN
, то вы должны первым, то вы сможете . Чтобы бросить , запустите:DROP
CONSTRAINT
DROP
COLUMN
CONSTRAINT
источник
constraint
по колонке ?В SQL Server 2016 вы можете использовать новые операторы DIE.
Вышеуказанный запрос повторно запускается в этом
drops
столбце, только если онexists
в таблице, иначе он не выдаст ошибку.Вместо того, чтобы использовать большие
IF
обертки, чтобы проверить существованиеcolumn
перед тем, как отбросить его, вы можете просто выполнить приведенный вышеDDL
оператористочник
Вопрос в том, можно ли удалить только столбец из несуществующей таблицы ;-)
источник
Простой ответ на это заключается в использовании этого:
Можно указать более одного столбца следующим образом:
В SQL Server 2016 также возможно удалить столбец, только если он существует. Это останавливает вас, когда вы не можете получить сообщение об ошибке, а это, вероятно, вас не волнует.
Есть некоторые предпосылки для удаления столбцов. Удаляемые столбцы не могут быть:
Если что-то из перечисленного верно, вам нужно сначала удалить эти ассоциации.
Кроме того, следует отметить, что удаление столбца не освобождает пространство от жесткого диска до тех пор, пока кластерный индекс таблицы не будет перестроен. Поэтому часто рекомендуется следовать приведенному выше с помощью команды перестроения таблицы, например:
Наконец, как некоторые говорили, это может быть медленным и, вероятно, заблокирует таблицу на время. Можно создать новую таблицу с желаемой структурой, а затем переименовать так:
Но имейте в виду, что здесь есть окно для потери данных вставленных строк между первым выбором и последней командой переименования.
источник
Чтобы добавить столбцы в существующую таблицу:
Чтобы удалить столбцы в существующей таблице:
источник
Это также можно сделать через графический интерфейс SSMS. Хорошая особенность этого метода в том, что он предупреждает вас о наличии каких-либо связей в этом столбце, а также может автоматически их удалять.
Как я уже говорил ранее, если есть какие-либо отношения, которые также необходимо удалить, на данном этапе вас спросят, хотите ли вы удалить их. Скорее всего, вам придется сделать это, чтобы удалить столбец.
источник
Если вы используете C # и столбец Identity имеет тип int, создайте новый экземпляр int, не предоставляя ему никакого значения. Это сработало для меня.
источник
Синтаксис:
Например:
источник