2009-11-22 2 views
13

Мне нужно добавить столбец флажка удаления ко всем 40 пользовательским таблицам в базе данных. Я мог бы написать сценарий для прокрутки sys.tables, но я решил проверить и посмотреть, есть ли у кого-либо лучшее решение или предварительно созданный sql для этого сценария.Добавление столбца ко всем пользовательским таблицам в t-sql

ответ

31

Существует недокументированная, но хорошо известно, хранимая процедура sp_msforeachtable:

exec sp_msforeachtable 'alter table ? add flag bit not null default 0'; 
+0

+1, но ... seraphym просит способ, чтобы удалить столбец , Хотя ваше заявление можно легко переписать для удаления, имя целевого столбца должно быть равномерным во всех таблицах. –

+3

psasik, seraphym хочет добавить столбец с именем «удалить» в каждую таблицу, а не удалять столбец из каждой таблицы. –

+0

очень круто, спасибо за вашу помощь! – seraphym

11

Нет, это ручной цикл.

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

SELECT 
    'ALTER TABLE ' + T.name + ' ADD foo int NULL' 
FROM 
    sys.tables AS T 
WHERE 
    T.is_ms_shipped = 0 

Или недокументированные

EXEC sys.sp_MSforeachtable 'ALTER TABLE ? ADD foo int NULL' 
Смежные вопросы