用sql语句修改数据类型(带约束)

jxzhang615 2008-09-05 03:27:10
如题
我想修改表中一个字段(WallExposure:原来是nvarchar(20)现在要改成varchar(20))的数据类型,可是这个字段有约束-constraint,这种情况如何解决.
我用Alter Table tblNWall_Wall Alter Column WallExposurevarchar(20) ,提示错误:
Msg 5074, Level 16, State 1, Line 1
The object 'DF_tblNWall_WallExposureID' is dependent on column 'WallExposure'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE ALTER COLUMN WallExposure failed because one or more objects access this column.

还有就是如何修改主键的数据类型?

请大家帮帮忙!很急阿,谢谢!

...全文
324 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CN_SQL 2008-09-05
  • 打赏
  • 举报
回复
主键一样的道理操作.
CN_SQL 2008-09-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 jxzhang615 的帖子:]
如题
我想修改表中一个字段(WallExposure:原来是nvarchar(20)现在要改成varchar(20))的数据类型,可是这个字段有约束-constraint,这种情况如何解决.
我用Alter Table tblNWall_Wall Alter Column WallExposurevarchar(20) ,提示错误:
Msg 5074, Level 16, State 1, Line 1
The object 'DF_tblNWall_WallExposureID' is dependent on column 'WallExposure'.
Msg 4922, Level 16, State 9, Line 1
ALTER TABLE A…
[/Quote]

USE tempdb
GO

CREATE TABLE T1
(
Name nvarchar(20) CONSTRAINT DF_Name DEFAULT('')
)
GO

--删除约束
ALTER TABLE T1
DROP CONSTRAINT DF_Name
GO

--修改字段
ALTER TABLE T1
ALTER COLUMN Name varchar(20)
GO

--添加约束
ALTER TABLE T1
ADD CONSTRAINT DF_Name
DEFAULT '' FOR Name
GO

--检查结果
EXEC SP_HELP 'T1'
GO


DROP TABLE T1
GO

jxzhang615 2008-09-05
  • 打赏
  • 举报
回复
试了一下 不行啊

[Quote=引用 4 楼 liangCK 的回复:]
先禁用约束..再修改可以吗?


SQL codealter table tblNWall_Wall nocheck constraint all
go
alter table tblNWall_Wall alter column WallExposure varchar(20)
go
alter table tblNWall_Wall check constraint all



这样可以吗?
[/Quote]
jxzhang615 2008-09-05
  • 打赏
  • 举报
回复
要求要用sql语句
liangCK 2008-09-05
  • 打赏
  • 举报
回复
先禁用约束..再修改可以吗?

alter table tblNWall_Wall nocheck constraint all
go
alter table tblNWall_Wall alter column WallExposure varchar(20)
go
alter table tblNWall_Wall check constraint all


这样可以吗?
昵称被占用了 2008-09-05
  • 打赏
  • 举报
回复
alter table tblNWall_Wall  drop CONSTRAINT  DF_tblNWall_WallExposureID
go

Alter Table tblNWall_Wall Alter Column WallExposure varchar(20) default ('')
go
天-笑 2008-09-05
  • 打赏
  • 举报
回复
你干嘛要用语句修改呢?
在表设计器里修改不是很快吗?
昵称被占用了 2008-09-05
  • 打赏
  • 举报
回复
先删除default,修改字段类型后再加回default

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧