我的脚本很简单:
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'T1' AND column_name = 'C1')
BEGIN
ALTER Table T1
ADD C1 BIT NOT NULL CONSTRAINT DF_T1_C1 DEFAULT 0
UPDATE Table T1
SET C1 = 1
END
GO
我收到错误
关键字“表格”附近的语法不正确。
我尝试了this solution,但没有更新列值。我来到了this,但我认为这不是我的情况,因为我不想捕捉异常或进行任何交易。我有这么简单的选择吗?
放置GO分隔符也没有帮助。
正如Joe Taras指出的那样,我已经改变了我的剧本,但现在却出现了错误
无效的列名称“C1”。
答案 0 :(得分:4)
在实际创建列之前,您需要确保UPDATE
不是编译。
使用EXEC
:
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'T1' AND column_name = 'C1')
BEGIN
ALTER Table T1
ADD C1 BIT NOT NULL CONSTRAINT DF_T1_C1 DEFAULT 0
EXEC('UPDATE Table T1
SET C1 = 1')
END
GO
答案 1 :(得分:3)
你的行:
UPDATE Table T1 SET C1 = 1
有错误,因为您已指定table关键字。
正确的语法是:
UPDATE T1 SET C1 = 1
编辑1
重写你的脚本如下,所以在GO分隔符后你会更新你的字段,所以你确定DBMS采用了DDL:
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.Columns
where table_name = 'T1' AND column_name = 'C1')
BEGIN
ALTER Table T1
ADD C1 BIT NOT NULL CONSTRAINT DF_T1_C1 DEFAULT 0
END
GO
UPDATE T1 SET C1 = 1
编辑2
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.Columns
where table_name = 'T1' AND column_name = 'C1')
BEGIN
ALTER Table T1
ADD C1 BIT NOT NULL CONSTRAINT DF_T1_C1 DEFAULT 0
EXEC('UPDATE T1 SET C1 = 1')
END
GO
答案 2 :(得分:0)
如果表中没有条目,则无法进行更新 在单独输入后尝试它