/*--修改/删除有默认值的字段 示例--*/--测试表 Create Table t1( ID int Default(0), Name Varchar(16) Default(16), Memo Varchar(255) Default('') ) go--要求,删除name字段,将memo字段改为: Memo Varchar(32) Default(32)--处理方法----a.先删除要处理字段的默认值约束 declare @s varchar(8000) set @s='' select @s=@s+' alter table ['+b.name+'] drop constraint ['+d.name+']' from syscolumns a join sysobjects b on a.id=b.id join syscomments c on a.cdefault=c.id join sysobjects d on c.id=d.id where b.name='t1' and (a.name='name' or a.name='memo') exec(@s)----b.再删除字段 name alter table t1 drop column [name]----c.修改字段 memo alter table t1 alter column [memo] varchar(32)----d.为字段 memo 添加默认值约束 set @s='alter table t1 add constraint [df__t1__memo__'+cast(newid() as varchar(36)) +'] default (32) for memo' exec(@s) go--插入数据测试 insert t1 values(default,default) select * from t1 go--删除测试 drop table t1/*--测试结果 ID Memo ----------- -------------------------------- 0 32(所影响的行数为 1 行) --*/
--也就是要,要修改字段的默认值,必须先删除旧的默认值约束,再按新的默认值添加约束.--删除旧的默认值约束名 alter table 你的表 drop constraint 默认值约束名--然后再设置新的默认值 alter table 你的表 drop constraint 默认值约束名 default ('默认值') for 字段名
ALTER TABLE dbo.alldayhz DROP CONSTRAINT DF_alldayhz_riqi ALTER TABLE dbo.alldayhz ADD CONSTRAINT DF_alldayhz_riqi DEFAULT 2001-01-04 FOR riqi 我晕,我用数据跟踪跟出来是这样的语句,可是已经有高人做了。
Create Table t1(
ID int Default(0),
Name Varchar(16) Default(16),
Memo Varchar(255) Default('')
)
go--要求,删除name字段,将memo字段改为: Memo Varchar(32) Default(32)--处理方法----a.先删除要处理字段的默认值约束
declare @s varchar(8000)
set @s=''
select @s=@s+'
alter table ['+b.name+'] drop constraint ['+d.name+']'
from syscolumns a
join sysobjects b on a.id=b.id
join syscomments c on a.cdefault=c.id
join sysobjects d on c.id=d.id
where b.name='t1'
and (a.name='name' or a.name='memo')
exec(@s)----b.再删除字段 name
alter table t1 drop column [name]----c.修改字段 memo
alter table t1 alter column [memo] varchar(32)----d.为字段 memo 添加默认值约束
set @s='alter table t1 add constraint
[df__t1__memo__'+cast(newid() as varchar(36))
+'] default (32) for memo'
exec(@s)
go--插入数据测试
insert t1 values(default,default)
select * from t1
go--删除测试
drop table t1/*--测试结果
ID Memo
----------- --------------------------------
0 32(所影响的行数为 1 行)
--*/
alter table 你的表 drop constraint 默认值约束名--然后再设置新的默认值
alter table 你的表 drop constraint 默认值约束名 default ('默认值') for 字段名
ALTER TABLE dbo.alldayhz
DROP CONSTRAINT DF_alldayhz_riqi
ALTER TABLE dbo.alldayhz ADD CONSTRAINT
DF_alldayhz_riqi DEFAULT 2001-01-04 FOR riqi
我晕,我用数据跟踪跟出来是这样的语句,可是已经有高人做了。