注册 登录
编程论坛 SQL Server论坛

如果表不存在某列,则新加列,设置默认值为另两列的差

WhoKnows 发布于 2015-09-11 17:57, 1648 次点击
各位大神,我想给一张表新加一个列。

如果该列不存在,则创建列,并且更新该列的值为另两列的差,下面是我写的,但是当我更新时,提醒我该列不存在,因为在IF里,又不能用GO,该怎么处理呢?

IF(NOT EXISTS (SELECT * FROM sys.columns WHERE NAME = 'NEW_COLUMN_NAME' AND OBJECT_ID('EXISTED_TABLE_NAME') = object_id))
BEGIN
ALTER TABLE EXISTED_TABLE_NAME
ADD NEW_COLUMN_NAME money
CONSTRAINT ONE_CONSTRAINT default 0.00 with values

UPDATE EXISTED_TABLE_NAME SET NEW_COLUMN_NAME=EXISTED_TABLE_NAME.COLUMN1-EXISTED_TABLE_NAME.COLUMN2
END

GO

跪求大神解答...感激不尽。。
小弟新来乍到,也没有分数赠送...
4 回复
#2
kinvanhon2015-09-11 20:06
语句没错,是否没指定数据库

[ 本帖最后由 kinvanhon 于 2015-9-11 20:14 编辑 ]
#3
WhoKnows2015-09-14 09:12
回复 2楼 kinvanhon
不是,它提示的是 找不到有这个column,我想应该是说 我新建column还没有应用到数据库的表上去,所以找不到,必须要先执行IF中的第一句话,才能执行第二句话
#4
kinvanhon2015-09-14 11:11
回复 3楼 WhoKnows
能执行到update说明if是true,update出错提示找不到列名,那就检查该数据表是否真的无此新增列,若是,那就是alter的问题,若否,就检查update。
我用sql server2014测试通过。
#5
厨师王德榜2015-12-25 13:57
提示列不存在,不一定是指 NEW_COLUMN_NAME 不存在,如果
 EXISTED_TABLE_NAME.COLUMN1  或者 EXISTED_TABLE_NAME.COLUMN2 不存在,也会反馈这个信号。
1