gpt4 book ai didi

sql - 如果所有表中不存在某列,是否添加该列?

转载 作者:行者123 更新时间:2023-12-01 19:40:10 25 4
gpt4 key购买 nike

我使用的是 SQL Server 2005/2008。如果表尚不存在,我需要将其添加到表中。这将适用于给定数据库中的所有表。我希望我已经接近了,但我对这个解决方案有疑问。

如何做到这一点?

这是我所拥有的:

EXEC sp_MSforeachtable '
declare @tblname varchar(255);
SET @tblname = PARSENAME("?",1);

if not exists (select column_name from INFORMATION_SCHEMA.columns
where table_name = @tblname and column_name = ''CreatedOn'')
begin
ALTER TABLE @tblname ADD CreatedOn datetime NOT NULL DEFAULT getdate();
end
'

但我收到错误:

Error 102: Incorrect syntax near '@tblname'. Incorrect syntax near 'CreatedOn'. Incorrect syntax near '@tblname'. Incorrect syntax near 'CreatedOn'. ... and so on, for each table.

最佳答案

您不能在 DDL 中使用变量,例如@tableName。此外,将名称分成几部分并忽略架构只会导致错误。您应该只在 SQL 批处理参数中使用 ''?'' 替换,并依赖 MSforeachtable 替换:

EXEC sp_MSforeachtable '
if not exists (select * from sys.columns
where object_id = object_id(''?'')
and name = ''CreatedOn'')
begin
ALTER TABLE ? ADD CreatedOn datetime NOT NULL DEFAULT getdate();
end';

关于sql - 如果所有表中不存在某列,是否添加该列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5146070/

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