gpt4 book ai didi

sql-server - 是否可以同时向多个表添加列?

转载 作者:行者123 更新时间:2023-12-02 18:44:34 25 4
gpt4 key购买 nike

我正在使用 SQL Server。我想将名为 [DateCreated] 的单个列添加到多个表中。是否可以通过一条语句将此列添加到数据库中的所有表中?

我偶然发现了 Joe Steffaneli 的回答,他在其中建议了一个查询,该查询又返回包含 Alter table 语句的行。查询如下:

select 'alter table ' + quotename(s.name) + '.' + quotename(t.name) + ' add [DateModified] datetime'
from sys.columns c
inner join sys.tables t
on c.object_id = t.object_id
inner join sys.schemas s
on t.schema_id = s.schema_id
left join sys.columns c2
on t.object_id = c2.object_id
and c2.name = 'DateModified'
where c.name = 'DateCreated'
and t.type = 'U'
and c2.column_id is null /* DateModified column does not already exist */

有什么方法可以执行返回的行吗?对不起英语。

最佳答案

您可能需要这样的东西。在运行脚本之前检查脚本是否执行了您想要的操作(添加默认值为 getdate() 的非空列)!

DECLARE @Dynsql nvarchar(max) 
SET @Dynsql = ''

SELECT @Dynsql = @Dynsql + '
alter table ' + QUOTENAME(SCHEMA_NAME(schema_id))+ '.' + QUOTENAME(name) +
' add [DateCreated] datetime not null default getdate()'
FROM sys.tables
WHERE type='U' and object_id NOT IN (select object_id from sys.columns where name='DateCreated')


EXEC (@Dynsql)

关于sql-server - 是否可以同时向多个表添加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com