2009-07-27 3 views
1

Можно ли это сделать и навалом? Чтобы все столбцы в таблице можно было отключить, флаг «NOT NULL»?Есть ли способ ALTER столбца отключить «NOT NULL»?

+0

для базы данных MSSQL, чтобы уточнить;) – Stephen

+0

Какая версия SQL Server? Будет иметь значение для идеального сценария, чтобы пройти через все их ... – AakashM

+0

Я обеспокоен тем, почему кто-то захочет делать это навалом. Я бы никогда не подумал об изменении такого масштаба, не рассматривая влияние на каждую часть моей системы, вы можете сломать много вещей, когда вдруг разрешаете нули, где они не были раньше. И обычно есть причина, по которой поле не допускает null. – HLGEM

ответ

3

Вы должны иметь возможность использовать инструкцию ALTER TABLE xxx ALTER COLUMN для переопределения столбца.


Если это одноразовая вещь вам нужно запустить, вы могли бы использовать трюк, написав запрос, который запрашивает имена столбцов для таблицы из системы/таблиц DBA и генерирует ваш альтер заявления. Вы копируете результаты запроса (ваши 15 или несколько указаний alter) в свой скрипт и просто запускаете его. У меня нет большого опыта, ни MSSQL среду, чтобы проверить прямо сейчас, но что-то вдоль линий:

SELECT 
    'ALTER TABLE ' + table_name + ' ALTER COLUMN ' + column_name + ' ' + data_type 
FROM INFORMATION_SCHEMA.Columns 
WHERE TABLE_NAME = 'xxx' 

, где вам нужно будет манипулировать DATA_TYPE часть, чтобы добавить/удалить текст NULL ограничения

+0

Прохладный, можно ли это сделать в цикле, чтобы пройти через каждый столбец в таблице? Если да, то можете ли вы объяснить/показать код? – Stephen

+0

Вышеупомянутый запрос выведет несколько сценариев ALTER TABLE, по одному для каждого столбца. Выполнение каждого из них, один за другим, изменит все столбцы –

0

Да, вы можете это сделать. Читайте книги онлайн.

Нет, это невозможно сделать массовым, но вы можете выполнить несколько операторов в одном запросе.

+0

Проблема состоит в том, что в таблице было столько столбцов, что это займет навсегда :( – Stephen

+0

Ну, если в таблице столько столбцов, что вы не можете сделать это вручную, тогда вы должны * реально переосмыслить свою таблицу :-(Во всяком случае, вы можете сценаризировать оператор ALTER, либо в T-SQL (должен выполняться), либо просто написать сценарий, который генерирует выражения ALTER. – sleske

0

Получите список столбцов и шаблон, который имеет необходимый SQL, и используйте некоторый инструмент для создания инструкций для вас. Я делал это в Excel раньше, но вы могли бы написать настоящую программу, используя свой язык выбора.

1

Чтобы сделать это оптом, однажды ...

Используйте SSMS дизайнер для создания сценария. Это приведет к восстановлению вашей таблицы (создайте временную таблицу, скопируйте данные, удалите старую таблицу, переименуйте таблицу temp).

В противном случае, это один в то время, используя ALTER TABLE ...

0

Когда число таблиц достаточно Я использую SSMSE (SQL Server Management Studio Express) низкая, при входе в режим дизайна на каждом столе и проверка Разрешить Nulls на требуемые столбцы.

Для большего количества столов попробуйте ответить ChrisCM.

Смежные вопросы