1。修改字段的数据类型、字段的默认值
(1)、先删除字段中的约束,再进行修改数据类型,有必要可以再加上已经删除的约束。
(2)、修改默认值时,先要删除字段中的约束,再添加新的默认值。
DECLARE @NAME NVARCHAR(128);/
SELECT @NAME=OBJ.NAME FROM SYSOBJECTS OBJ INNER JOIN /
SYSOBJECTS TAB ON OBJ.PARENT_OBJ = TAB.ID INNER JOIN /
SYSCOLUMNS COL ON OBJ.INFO = COL.COLID AND TAB.ID = COL.ID /
WHERE (TAB.NAME = '表名') AND (COL.NAME = '字段名');//查找相应字段的约束名
EXEC('ALTER TABLE [表名] DROP CONSTRAINT '+@NAME);//删除约束名
ALTER TABLE [表名] ALTER COLUMN [要修改类型的字段名] 数据类型;//修改数据类型
ALTER TABLE [表名] ADD DEFAULT '默认值' FOR [字段名] WITH VALUES;//添加默认值
2。用SQL语句修改表中字段的默认值
/*--修改/删除有默认值的字段 示例--*/
--测试表
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
或
ALTER TABLE 表名 add DEFAULT ('修改后的默认值') for 字段名 WITH VALUES
注:如果该字段以前已经有默认值了,在修改之前需要先将约束删除,否则会报错
删约束的SQL:
Alter table 表名 drop constraint 约束名
关于约束名,需要先查一下,
查约束名的SQL:
select c.name from sysconstraints a
inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id
where a.id=object_id('表名')
and b.name='字段名‘
本文介绍如何使用SQL语句修改数据库表中的字段数据类型及默认值,包括删除约束、修改数据类型和添加新的默认值等步骤。

被折叠的 条评论
为什么被折叠?



