【发布时间】:2017-10-05 14:45:10
【问题描述】:
我有如下声明:
EXEC sp_MSforeachtable '
DECLARE @defaultId integer;
SET @defaultId = 13;
IF EXISTS(SELECT name FROM sys.sysobjects WHERE Name = N''?'' AND xtype = N''U'')
BEGIN
IF COL_LENGTH(''[?]'',''NewColumn'') IS NULL
BEGIN
ALTER TABLE [?] ADD NewColumn integer null
UPDATE [?]
SET NewColumn = @defaultId
END
END
'
我正在尝试将NewColumn 列添加到我的数据库中没有它的所有表中,并将默认值设置为13。我执行它,它说它成功完成,但没有任何改变。我在这里做错了什么?
注意:我有一个名为 User 的表,因此是 "[]"。我不知道这是否会增加额外的复杂性。
【问题讨论】:
-
旁白:您可能想看看
QuoteName()。提示:使用适当的软件(MySQL、Oracle、DB2 等)和版本标记数据库问题很有帮助,例如sql-server-2014。语法和功能的差异通常会影响答案。请注意,tsql缩小了选择范围,但没有指定数据库。 -
@HABO 谢谢。我已经相应地更新了标签。
-
虽然在下面接受的答案中提到:名为 USER 的表在这里不是问题。
标签: sql sql-server tsql sql-server-2016