修改字段的数据类型、字段的默认值
2007-08-22 19:25
603 查看
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='字段名‘
(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='字段名‘
相关文章推荐
- Oracle:SQL语句--对表的操作——修改列的数据类型( 即 修改字段的数据类型)
- oracle 在表中有数据的情况下修改表字段类型或缩小长度
- SQL语句增加字段、修改字段、修改类型、修改默认值
- Oracle 修改带数据的字段类型
- 2009-12-01 15:10 SQL SERVER 2008数据库的表中修改字段的数据类型后,不能保存
- MySQL中日期类型数据的使用:如何让字段保存记录的创建时间和最后修改时间
- SQL SERVER 2008数据库的表中修改字段的数据类型后,不能保存
- SQL SERVER 2008数据库的表中修改字段的数据类型后,不能保存
- mysql命令行命令和SQL语句,MySQL修改删除增加字段类型,字段数据等。。
- 订单号数据类型修改--删除和创建复制订阅项目(只需要操作指定字段作为主键的那些)
- MySQL-修改字段类型、设置默认值,以及添加注释
- oracle向已有表增加字段、字段设置默认值、修改表字varchar类型的长度
- MySQL语句增加字段,修改字段名,修改类型,修改默认值
- Sql Server 增加字段、修改字段、修改类型、修改默认值
- DB2中的数据类型,默认值,及列修改DDL语句
- Sql修改表中带默认值约束的字段数据类型
- SG公务车:用车人职务级别改成可以手动输入(续:不删表数据,修改字段类型)
- Oracle 修改带数据的字段类型
- 批量修改数据库中字段的数据类型
- SQL语句增加字段、修改字段、更改类型、修改默认值