向t-sql中的所有用户表添加列
我需要在数据库中的所有40个用户表中添加一个delete flag列。我可以编写一个脚本在sys.tables中循环,但我想我应该检查一下,看看是否有人有更好的解决方案,或者针对这种情况预先创建了sql。有一个未记录但众所周知的存储过程sp\u msforeachtable:向t-sql中的所有用户表添加列,sql,sql-server,tsql,database-design,metadata,Sql,Sql Server,Tsql,Database Design,Metadata,我需要在数据库中的所有40个用户表中添加一个delete flag列。我可以编写一个脚本在sys.tables中循环,但我想我应该检查一下,看看是否有人有更好的解决方案,或者针对这种情况预先创建了sql。有一个未记录但众所周知的存储过程sp\u msforeachtable: exec sp_msforeachtable 'alter table ? add flag bit not null default 0'; 不,这是手动循环 当然,您也可以构建一个SQL语句 SELECT
exec sp_msforeachtable 'alter table ? add flag bit not null default 0';
不,这是手动循环 当然,您也可以构建一个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'
+但是…seraphym正在寻求一种方法来移除一个列。虽然您的语句可以很容易地重写为drop,但目标列的名称必须在所有表中保持一致。psasik,seraphym希望在每个表中添加一个名为“delete”的列,而不是从每个表中删除一列。