中途修改数据类型可以么?

wonkju 2013-03-11 09:03:27
是这样的,我的数据库中的表,是bigint类型,然后我在asp页面中都做好了ObjectDataSource、ListView、FormView等都好了,但是中途发现我想要表中的字段类型修改为int类型,我手动修改总是提示说"can not change....",这怎么解决哈?
...全文
243 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
silwol 2013-03-13
  • 打赏
  • 举报
回复
if OBJECTPROPERTY(OBJECT_ID(N'dbo.test'), N'IsUserTable') = 1
   drop table dbo.test
go

--crate table
create table dbo.test (
Id bigint not null,
data int null)
go

alter table dbo.test with check add 
   constraint pk_test PRIMARY KEY CLUSTERED
   (
       Id
   )
go

--drop pk
alter table dbo.test 
drop constraint pk_test
go

--alter column
alter table dbo.test
alter column Id int not null
go

--add pk
alter table dbo.test with check add 
   constraint pk_test PRIMARY KEY CLUSTERED
   (
       Id
   )
go
cshas 2013-03-13
  • 打赏
  • 举报
回复
1.导出库里的所有表的生成脚本. 2.修改脚本里的数据类型. 2.加载运行脚本.
wonkju 2013-03-13
  • 打赏
  • 举报
回复
引用 14 楼 ssp2009 的回复:
删除外键引用,而且如果你的bigint字段值在int范围内是可以修改的,如果不是,那也没办法修改。
没有外键使用也是不行的!~
wonkju 2013-03-13
  • 打赏
  • 举报
回复
引用 14 楼 ssp2009 的回复:
删除外键引用,而且如果你的bigint字段值在int范围内是可以修改的,如果不是,那也没办法修改。
这我知道,我用同样的方法,我的意思是说,像修改普通字段一样的命令修改主键,是不行的,我试过了!
快溜 2013-03-12
  • 打赏
  • 举报
回复
删除外键引用,而且如果你的bigint字段值在int范围内是可以修改的,如果不是,那也没办法修改。
快溜 2013-03-11
  • 打赏
  • 举报
回复
主键被别的表引用了就不能改了。
sbicfwxf9 2013-03-11
  • 打赏
  • 举报
回复
重新建个表吧,然后把这个表里的数据倒过去,再删掉旧表,重命名新表
threenewbee 2013-03-11
  • 打赏
  • 举报
回复
为什么字段数据类型不能随便换?因为数据库系统会为不同类型的字段分配不同的存储,比如Hash表、链表、桶等等,这些数据结构在底层不兼容。数据库系统在选择高效存储/查询的设计目标,和允许个别用户修改数据类型这两者之间,显然优先满足前者。
  • 打赏
  • 举报
回复
如果值都在int范围内,先将主键去掉,再换成int型,忽略警告,然后再设主键
cjh200102 2013-03-11
  • 打赏
  • 举报
回复
要么删除或者新建一个字段
threenewbee 2013-03-11
  • 打赏
  • 举报
回复
不可以,你可以删掉这个字段,再创建一个。如果你的表没有数据的话。
孙大诚_SunRobin 2013-03-11
  • 打赏
  • 举报
回复
中途是什么意思
wonkju 2013-03-11
  • 打赏
  • 举报
回复
忘了说了,我要修改的类型是主键的,我发现手动修改的话,都不成功,不管是主键还是非主键,但是对于对于主键,用命令去修改仍然不支持。 报错说: Parse Error: The Table xx is dependent on column id。。。。 主键有点麻烦,怎么解决哈!这两天貌似这里人活动真的不是很多。
wonkju 2013-03-11
  • 打赏
  • 举报
回复
引用 9 楼 ssp2009 的回复:
主键被别的表引用了就不能改了。
如果主键的修改,命令是不一样的。就像我在 2 楼说的。报错说 "table xx dependent on column xxx"
wonkju 2013-03-11
  • 打赏
  • 举报
回复
引用 9 楼 ssp2009 的回复:
主键被别的表引用了就不能改了。
是么?牛···确实是被别的表引用了,我想请问,如果是主键,也是同样的语句么? 我的意思是,用命令修改的时候,主键的字段和非主键的字段,是不是要用特殊的命令。 有空我也测试,行不行,现在要去晚自习先了。···
wonkju 2013-03-11
  • 打赏
  • 举报
回复
引用 10 楼 jokeesloat 的回复:
数据库是可以修改列属性的
对,是可以的,虽然像版主在7楼说的,但是我还是觉得还是可以, 如果是那样,范围大变小,可以就丢失数据,小范围变大范围,就肯定可以,今天我在Google找了一下,用命令修改是可以的,如果不用命令的话,是不行的。。 但是像在2楼我说的,如果是主键就修改不了,或是更复杂的操作,可以!http://stackoverflow.com/questions/408825/how-to-change-the-data-type-of-a-column-with-query
jokeesloat 2013-03-11
  • 打赏
  • 举报
回复
数据库是可以修改列属性的

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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