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

发布于 2024-08-12 14:54:01 字数 99 浏览 3 评论 0原文

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

I need to add a delete flag column to all 40 user tables in a database. I could write a script to loop through sys.tables, but I thought I'd check and see if anyone has either a better solution, or pre-created sql for this scenario.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冬天的雪花 2024-08-19 14:54:01

有一个未记录但众所周知的存储过程 sp_msforeachtable:

exec sp_msforeachtable 'alter table ? add flag bit not null default 0';

There is an undocumented but well known stored procedure sp_msforeachtable:

exec sp_msforeachtable 'alter table ? add flag bit not null default 0';
与他有关 2024-08-19 14:54:01

不,这是一个手动循环。

或者您当然可以构建单个 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'

No, it's a manual loop.

Or you could build up a single SQL statement of course...

SELECT 
    'ALTER TABLE ' + T.name + ' ADD foo int NULL'
FROM
    sys.tables AS T
WHERE
    T.is_ms_shipped = 0

Or the undocumented

EXEC sys.sp_MSforeachtable 'ALTER TABLE ? ADD foo int NULL'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文