Мне нужно добавить столбец флажка удаления ко всем 40 пользовательским таблицам в базе данных. Я мог бы написать script для цикла через sys.tables, но я решил проверить и посмотреть, есть ли у кого-либо лучшее решение или предварительно созданный sql для этого сценария.
Добавление столбца ко всем пользовательским таблицам в t-sql
Ответ 1
Существует недокументированная, но хорошо известная хранимая процедура sp_msforeachtable:
exec sp_msforeachtable 'alter table ? add flag bit not null default 0';
Ответ 2
Нет, это ручная петля.
Или вы могли бы создать единую инструкцию 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'