13
我需要为数据库中的所有40个用户表添加一个删除标志列。我可以编写一个脚本来循环sys.tables,但我想我会检查并查看是否有人有更好的解决方案,或者为此场景预先创建的sql。在t-sql的所有用户表中添加一列
我需要为数据库中的所有40个用户表添加一个删除标志列。我可以编写一个脚本来循环sys.tables,但我想我会检查并查看是否有人有更好的解决方案,或者为此场景预先创建的sql。在t-sql的所有用户表中添加一列
有一个无证但众所周知的存储过程sp_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'
+1,但... seraphym是要求一种方式来删除列。虽然你的陈述很容易被重写,但是所有表格中的目标字段的名称必须是统一的。 – 2009-11-22 20:18:03
psasik,seraphym希望为每个表添加一个名为'delete'的列,而不是从每个表中删除一列。 – 2009-11-22 20:21:44
很酷,感谢您的帮助! – seraphym 2009-11-22 21:29:49