【发布时间】:2012-02-10 20:24:58
【问题描述】:
我想为 MS SQL Server 编写一个查询,将一列添加到表中。但是当我运行/执行以下查询时,我不希望显示任何错误。
我正在使用这种查询来添加一个表...
IF EXISTS (
SELECT *
FROM sys.objects
WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[Person]')
AND TYPE IN (N'U')
)
但我不知道如何为列编写此查询。
【问题讨论】:
-
您应该使用
sys.tables而不是“通用”sys.objects- 这样您就不必明确指定类型(从sys.tables已经很明显......) -
COL_LENGTH Alternative 仅适用于 SQL-Server 2008,但它有效。
-
@MartinSmith 非常不重复。您的链接是解决它的一种可能方法(实际上,现在是推荐的方法)。但是问题实际上是不同的,并且可以使用其他解决方案(例如,如果 SQL 在
ADD COLUMN语法中添加了IF NOT EXISTS子句) -
@Brondahl - 自您回复的评论发布以来,这个问题在 8.5 年内一直存在,因此可能无需恐慌。目前,这里的所有答案基本上都是链接 Q 中的答案
标签: sql-server add not-exists