Удаление столбцов в MS SQL Server - PullRequest
43 голосов
/ 16 апреля 2009

Как удалить столбец из существующей таблицы?

Ответы [ 4 ]

94 голосов
/ 16 апреля 2009

Команда, которую вы ищете:

alter table tblName drop column columnName

, где tblName - это имя таблицы, а columnName - это имя столбца, но есть несколько вещей, которые вам, возможно, потребуется сделать в первую очередь.

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

Имейте в виду, что выполнение этой команды не обязательно может быть хорошим. Одним из вариантов является ожидание периода простоя, когда вы можете быть уверены, что никто не будет обращаться к базе данных, переименовать текущую таблицу, а затем использовать create table и insert into ... select from для передачи столбцов, которые вы не хотите удалять.

Один из более поздних выпусков Oracle фактически имеет мягкое удаление, которое может просто пометить столбец как неиспользованный, не удаляя его физически. Он имеет тот же эффект, поскольку вы больше не можете ссылаться на него, и есть команда, аналогичная alter table ... drop unused columns, которая должна выполняться в спокойное время, которая выполняет тяжелую работу по ее фактическому удалению.

Преимущество заключается в немедленном "исчезновении" столбцов без снижения производительности базы данных в загруженное время.

13 голосов
/ 16 апреля 2009

ALTER TABLE XXX DROP COLUMN YYY;

3 голосов
/ 16 апреля 2009

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

2 голосов
/ 12 апреля 2016

Это также можно сделать через графический интерфейс SSMS.

Мне нравится этот метод, потому что он предупреждает вас о наличии каких-либо связей в этом столбце, а также может автоматически их удалять. Как утверждает PaxDiablo, если есть отношения, они должны быть сначала удалены.

  1. Поместить таблицу в режиме конструктора (щелкните правой кнопкой мыши по таблице) следующим образом:

enter image description here

  1. Щелкните правой кнопкой мыши по столбцу в представлении «Дизайн» таблицы и нажмите «Удалить». Колонка "

enter image description here

В этот момент, если есть какие-либо отношения, которые также необходимо удалить, вам будет предложено удалить их.

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