在t-sql中为所有用户表添加一列

ser*_*hym 13 sql t-sql sql-server database-design metadata

我需要向数据库中的所有40个用户表添加一个删除标志列.我可以编写一个脚本来循环遍历sys.tables,但我想我会检查一下是否有人有更好的解决方案,或者预先为这个场景创建了sql.

Rem*_*anu 31

有一个没有文档但是众所周知的存储过程sp_msforeachtable:

exec sp_msforeachtable 'alter table ? add flag bit not null default 0';
Run Code Online (Sandbox Code Playgroud)

  • psasik,seraphym想要为每个表添加一个名为'delete'的列,而不是从每个表中删除一列. (3认同)

gbn*_*gbn 11

不,这是一个手动循环.

或者你当然可以构建一个SQL语句......

SELECT 
    'ALTER TABLE ' + T.name + ' ADD foo int NULL'
FROM
    sys.tables AS T
WHERE
    T.is_ms_shipped = 0
Run Code Online (Sandbox Code Playgroud)

或者没有证件

EXEC sys.sp_MSforeachtable 'ALTER TABLE ? ADD foo int NULL'
Run Code Online (Sandbox Code Playgroud)