Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向t-sql中的所有用户表添加列_Sql_Sql Server_Tsql_Database Design_Metadata - Fatal编程技术网

向t-sql中的所有用户表添加列

向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

我需要在数据库中的所有40个用户表中添加一个delete flag列。我可以编写一个脚本在sys.tables中循环,但我想我应该检查一下,看看是否有人有更好的解决方案,或者针对这种情况预先创建了sql。

有一个未记录但众所周知的存储过程sp\u msforeachtable:

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”的列,而不是从每个表中删除一列。