标题:如果表不存在某列,则新加列,设置默认值为另两列的差
只看楼主
WhoKnows
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-9-11
 问题点数:0 回复次数:4 
如果表不存在某列,则新加列,设置默认值为另两列的差
各位大神,我想给一张表新加一个列。

如果该列不存在,则创建列,并且更新该列的值为另两列的差,下面是我写的,但是当我更新时,提醒我该列不存在,因为在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

跪求大神解答...感激不尽。。
小弟新来乍到,也没有分数赠送...
2015-09-11 17:57
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
得分:0 
语句没错,是否没指定数据库

[ 本帖最后由 kinvanhon 于 2015-9-11 20:14 编辑 ]
2015-09-11 20:06
WhoKnows
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-9-11
得分:0 
回复 2楼 kinvanhon
不是,它提示的是 找不到有这个column,我想应该是说 我新建column还没有应用到数据库的表上去,所以找不到,必须要先执行IF中的第一句话,才能执行第二句话
2015-09-14 09:12
kinvanhon
Rank: 5Rank: 5
来 自:战争学院
等 级:贵宾
威 望:16
帖 子:99
专家分:258
注 册:2014-10-7
得分:0 
回复 3楼 WhoKnows
能执行到update说明if是true,update出错提示找不到列名,那就检查该数据表是否真的无此新增列,若是,那就是alter的问题,若否,就检查update。
我用sql server2014测试通过。
2015-09-14 11:11
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
提示列不存在,不一定是指 NEW_COLUMN_NAME 不存在,如果
 EXISTED_TABLE_NAME.COLUMN1  或者 EXISTED_TABLE_NAME.COLUMN2 不存在,也会反馈这个信号。
2015-12-25 13:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457237-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.881146 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved