全部要用alter table ...,似乎没有好办法,要用游标循环了
解决方案 »
- 求各位前辈帮忙,一条sql
- sql求助
- SQL2000中一个关于临时表的问题
- 请教一下数据库的备份策略。
- 求大牛:SQLsrever自动生成对象执行统计信息报表并导出excel?
- sql2000个人版在XP下安不上,提示错误:command line option syntax Tytecommand/?for help
- 各位,求救一个问题,有关在 NT4.0 中的SQL Server7.0的配置问题,急急急!!!!
- SQL Server 2008, 关于查询表内的时间段数据是否重叠
- 关于SQL问题
- 这两个语句,怎么组合在一起?
- 大家看一下我的调用存储过程的语句哪里错了
- 谁有好的方法,帮帮小弟啊!
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'alter table '+a.name+' add constraint df_'+a.name+'_'+b.name+' default(0) for '+b.name+char(13)
from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='U' and a.name<>'dtproperties' and b.xtype=56
-- and a.name='表名'
order by a.name
print
--exec(@sql)若整个@sql长度会超过8000,则将and a.name='表名'这个条件加上一个表一个表的执行
上面语句在所有int字段上都没有默认值时适用
declare @sql varchar(8000),@tb varchar(100)
declare c cursor for
select name from sysobjects where xtype='U' and name<>'dtproperties'
open c
fetch next from c into @tb
while @@fetch_status=0
begin
set @sql=''
select @sql=@sql+'alter table '+a.name+' add constraint df_'+a.name+'_'+b.name+' default(0) for '+b.name+char(13)
from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='U' and a.name<>'dtproperties' and b.xtype=56
and a.name=@tb
if @sql<>''
exec(@sql)
fetch next from c into @tb
end
close c
deallocate c
谢谢 pbsql(风云)
declare @sql varchar(8000),@tb varchar(100)
declare c cursor for
select name from sysobjects where xtype='U' and name<>'dtproperties'
open c
fetch next from c into @tb
while @@fetch_status=0
begin
set @sql=''
select @sql=@sql+'alter table '+a.name+' add constraint df_'+a.name+'_'+b.name+' default(0) for '+b.name+char(13)
from sysobjects a,syscolumns b
where a.id=b.id and a.xtype='U' and a.name<>'dtproperties' and b.xtype=56
and a.name=@tb and COLUMNPROPERTY(b.id,b.name,'IsIdentity')<>1
and 'df_'+a.name+'_'+b.name not in(select name from sysobjects where xtype='D')
if @sql<>''
exec(@sql)
fetch next from c into @tb
end
close c
deallocate c