alter 修改表字段的默认值问题。!!!!

时间:2023-01-17 07:10:41
我想修改一个表的默认值,下面的SQL提示出错。
ALTER TABLE [dbo].[Employee] ALTER COLUMN cID char(10) SET Default '22' NOT NULL 

出错信息为:
服务器: 消息 156,级别 15,状态 1,行 1
Incorrect syntax near the keyword 'Default'.

请问是什么原因。怎么样才能修改表字段的默认值

11 个解决方案

#1


如果已经存在默认值约束,需要先删除这个默认值约束,然后再添加默认值约束。

#2


--如果不知道默认值约束的名称,需要用SQL来取得:

declare @csname varchar(100)
set @csname=''

select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N'表名') and name='字段名')

--动态删掉约束
exec('alter table 表名 drop constraint '+@csname)

#3


ALTER TABLE [dbo].[Employee] ALTER COLUMN cID SET DEFAULT '22'

#4


怎么删除呢。

#5


--如果知道默认值的约束名,按如下:

alter table 表名 drop constraint 约束名


--如果不知道默认值约束的名称,需要用SQL来取得:

declare @csname varchar(100)
set @csname=''

select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N'表名') and name='字段名')

--动态删掉约束
exec('alter table 表名 drop constraint '+@csname)

#6


删除原来的默认值约束,在修改时还是有错。

#7


删除后,就需要添加,如:

ALTER TABLE [dbo].[Employee] add constraint 约束名 Default ('22')  for cID

#8


alter table TC_Employee 
drop  df_Name

alter table TableName 
add  constraint df_name  default(1) for clomnName

#9


学习了

#10


--如果知道默认值的约束名,按如下:

alter table 表名 drop constraint 约束名


--如果不知道默认值约束的名称,需要用SQL来取得:

declare @csname varchar(100)
set @csname=''

select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N'表名') and name='字段名')

--动态删掉约束
exec('alter table 表名 drop constraint '+@csname)


--删除后,就需要添加,如:

exec ('ALTER TABLE [dbo].[Employee] add constraint ' + @csname + ' Default (''22'')  for cID')

#11


学习了。

#1


如果已经存在默认值约束,需要先删除这个默认值约束,然后再添加默认值约束。

#2


--如果不知道默认值约束的名称,需要用SQL来取得:

declare @csname varchar(100)
set @csname=''

select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N'表名') and name='字段名')

--动态删掉约束
exec('alter table 表名 drop constraint '+@csname)

#3


ALTER TABLE [dbo].[Employee] ALTER COLUMN cID SET DEFAULT '22'

#4


怎么删除呢。

#5


--如果知道默认值的约束名,按如下:

alter table 表名 drop constraint 约束名


--如果不知道默认值约束的名称,需要用SQL来取得:

declare @csname varchar(100)
set @csname=''

select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N'表名') and name='字段名')

--动态删掉约束
exec('alter table 表名 drop constraint '+@csname)

#6


删除原来的默认值约束,在修改时还是有错。

#7


删除后,就需要添加,如:

ALTER TABLE [dbo].[Employee] add constraint 约束名 Default ('22')  for cID

#8


alter table TC_Employee 
drop  df_Name

alter table TableName 
add  constraint df_name  default(1) for clomnName

#9


学习了

#10


--如果知道默认值的约束名,按如下:

alter table 表名 drop constraint 约束名


--如果不知道默认值约束的名称,需要用SQL来取得:

declare @csname varchar(100)
set @csname=''

select @csname=[name] --约束名称
from sysobjects t
where id=(select cdefault from syscolumns where id=object_id(N'表名') and name='字段名')

--动态删掉约束
exec('alter table 表名 drop constraint '+@csname)


--删除后,就需要添加,如:

exec ('ALTER TABLE [dbo].[Employee] add constraint ' + @csname + ' Default (''22'')  for cID')

#11


学习了。