| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1627 人关注过本帖
标题:如果表不存在某列,则新加列,设置默认值为另两列的差
只看楼主 加入收藏
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: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:987
专家分:4946
注 册:2013-2-16
收藏
得分:0 
提示列不存在,不一定是指 NEW_COLUMN_NAME 不存在,如果
 EXISTED_TABLE_NAME.COLUMN1  或者 EXISTED_TABLE_NAME.COLUMN2 不存在,也会反馈这个信号。
2015-12-25 13:57
快速回复:如果表不存在某列,则新加列,设置默认值为另两列的差
数据加载中...
 
   



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

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