【发布时间】:2020-06-23 13:21:46
【问题描述】:
您好,我正在更改一个 SQL 表,我想在其中添加一个新列 A,然后根据另一列 B 的值设置其默认值。我该怎么做?
到目前为止我已经尝试过:
IF NOT EXISTS(SELECT *FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='T' AND COLUMN_NAME='B')
BEGIN
ALTER TABLE T ADD B bit default 0;
UPDATE T
SET B = A
我不断收到错误:
Msg 207, Level 16, State 1, Line 23
Invalid column name 'B'.
P.S:我想原子地执行这两个语句(更改表并更新新创建的列)
我原以为这是MSSQL 中的Intellisense 的问题,但能够按顺序运行命令。
更新
我也试过分成两条语句,还是没用:
IF NOT EXISTS(SELECT *FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='T' AND COLUMN_NAME='B')
ALTER TABLE T ADD B bit default NULL;
UPDATE T
SET B = A
WHERE B = NULL
END
【问题讨论】:
-
为什么不把它变成一个计算列?
-
我不知道将其作为计算列有什么影响。这是一个完整的列,我将在未来对其进行更新。我只需要一种创建和初始化它的方法。
标签: sql-server transactions alter