CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

遍历数据库添加默认值

楼主bzscs(沙虫 我爱小美)2005-12-05 16:06:55 在 MS-SQL Server / 基础类 提问

遍历数据库,如果是数字型的列,就加默认值0  
  -  
  如果是日期型的列,就加默认值getdate()  
  -  
  该怎么做呢 问题点数:30、回复次数:5Top

1 楼lw1a2(一刀 现在改六点下班了:()回复于 2005-12-05 16:12:03 得分 1

改表结构?Top

2 楼bzscs(沙虫 我爱小美)回复于 2005-12-05 16:27:10 得分 0

是的啊,修改结构,从access导入的表,默认值都没有了,该怎么用sql一次性加上去,手工加麻烦了点Top

3 楼superunusa(迷失方向的蚂蚁)回复于 2005-12-05 16:32:11 得分 1

估计不好做,你可以用语句民改  
   
  Top

4 楼wangtiecheng(不知不为过,不学就是错!)回复于 2005-12-05 17:50:27 得分 20

CREATE   PROCEDURE   UpdateAllDefault  
  as  
   
  declare   cur   cursor  
  read_only   for    
  select   c.表名,   c.列名,d.data_type   as   类型,d.column_default   as   默认值  
  from    
  (select   a.name   as   表名,   b.name   as   列名  
  from  
  (select   *   from   dbo.sysobjects   where   type   ='u'   and   name   <>   'dtproperties')   a  
  inner   join    
  (select   *   from   syscolumns)   b   on   a.id   =   b.id)   c  
  inner   join   information_schema.columns   d   on   c.表名=d.table_name   and   c.列名=d.column_name  
   
  declare   @s   varchar(500)  
  declare   @表名   varchar(40)  
  declare   @列名   varchar(40)  
  declare   @类型   varchar(40)  
  declare   @默认值   varchar(40)  
   
  open   cur  
   
  fetch   next   from   cur   into   @表名,   @列名,   @类型,   @默认值  
  while   (@@fetch_status   =   0)  
  begin  
  if   isnull(@默认值,'')=''  
  begin  
  if   @类型   in   ('int','money') --数据类型,自己添加  
  begin  
  set   @s   =   '   alter   table   '+   @表名+'   add   default(0)   for   '   +   @列名  
  print   @s  
  exec   (@s)  
  end  
  if   @类型   in   ('datetime','smalldatetime') --日期类型  
  begin  
  set   @s   =   '   alter   table   '+   @表名+'   add   default(getdate())   for   '   +   @列名  
  print   @s  
  exec   (@s)  
  end  
  end  
   
  fetch   next   from   cur   into   @表名,   @列名,   @类型,   @默认值  
  end  
   
  close   cur  
  deallocate   cur  
  GO  
  Top

5 楼lw1a2(一刀 现在改六点下班了:()回复于 2005-12-05 18:44:12 得分 8

select   t.name,c.name,systypes.name    
  from   sysobjects   t,syscolumns   c,systypes    
  where   t.type='U'   and   t.id=c.id   and   systypes.type=c.type  
   
  然后用游标吧Top

相关问题

  • 数据库的默认值有什么用?一般什么时候设计数据库时用到默认值?
  • 数据库表遍历
  • 用sql语句如何设置数据库表的默认值?
  • 建立数据库时候时间的默认值怎么写?
  • 一个数据库遍历问题
  • 数据库添加
  • 添加数据库
  • sql server数据库中时间类型的字段如何设置默认值
  • 急救~~如何修改数据库某个字段的默认值啊
  • 大家在设计数据库表时,设不设默认值呀?

关键词

  • 默认值
  • 类型
  • 列名
  • 表名
  • systypes
  • 表
  • cur
  • varchar
  • declare
  • column

得分解答快速导航

  • 帖主:bzscs
  • lw1a2
  • superunusa
  • wangtiecheng
  • lw1a2

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo