为什么用SQL无法修改字段的数据类型

灿烂星河 2009-09-24 01:18:58
我想修改某张表的数据类型,我的数据库中的数据类型均使用的是自定义数据类型。
具体说来就是想把TBPlanCmdDt表的StockQty 字段的数据类型由RealNumber改为Number,
于是写了如下代码:
ALTER TABLE TBPlanCmdDt Alter COLUMN StockQty Number null
提示错误:
服务器: 消息 5074,级别 16,状态 1,行 1
对象 'D_RealNumber' 依赖于 列 'StockQty'。
网上搜了下,说是要先删除约束于是这么写:
ALTER TABLE TBPlanCmdDt DROP constraint [D_RealNumber]
go
ALTER TABLE TBPlanCmdDt Alter COLUMN StockQty Number null

但是又提示:
约束 'D_RealNumber' 不属于表 'TBPlanCmdDt'

事实上,我只是想删除StockQty 字段的默认值[D_RealNumber] 并把这个字段的数据类型由 RealNumber 改为 Number
可是无论我怎么写都无法去除这个默认值,也看到有人写了一个复杂的存储过程,但我没有具体实验。
我想先请教下诸位,修改一个字段的数据类型没有简单点的办法么?一定要些很复杂的存储过程么?
...全文
852 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
灿烂星河 2011-06-22
  • 打赏
  • 举报
回复
抱歉,这个帖子发了之后,忘记回来看了,这个问题是发生在SQLServer2000中的,表中并不存在外键。
david0927cs2006 2009-09-24
  • 打赏
  • 举报
回复
就像仓库的物品资料,如果分二级类别管理的话,我建一个大类表,一个子类表,那么子类是属于某一个大类的,在子类表里的大类ID就依赖于大类表的ID,要调整大类表的ID类型的话,须先解除子类表里的大类ID字段对大类表的依赖关系
david0927cs2006 2009-09-24
  • 打赏
  • 举报
回复
楼主,StockQty 是外键吧,
你查一下数据库里那个表的字段依赖于该字段
  • 打赏
  • 举报
回复
学习
zhangle861010 2009-09-24
  • 打赏
  • 举报
回复

把你做默认值的约束名称drop掉!

if object_id('a') is not null
drop table a

create table a
(
sid varchar(10) default('000'),
sname varchar(10)
)

insert a
select '001','aaa' union all
select '002','bbb' union all
select '003','ccc'

insert into a(sname) values ('ddd')

select * from a

alter table a drop column sid
---会提示约束存在不能删掉

alter table a
drop CONSTRAINT DF__a__sid__6ECB5E34
----把约束去掉
alter table a alter column sid char(10)

SQL77 2009-09-24
  • 打赏
  • 举报
回复
SELECT NAME FROM SYSOBJECTS WHERE 
ID=(SELECT PARENT_OBJ FROM SYSOBJECTS WHERE ID=OBJECT_ID('D_RealNumber'))


你查看一下属于哪个表
ks_reny 2009-09-24
  • 打赏
  • 举报
回复
通過系統表查詢一下那個約束是屬於哪個表?
lihan6415151528 2009-09-24
  • 打赏
  • 举报
回复
如果是oracle的話,錯誤會提示ORA-錯誤代碼的
ks_reny 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
感觉像ORACLE
[/Quote]
不會是oracle,如果是oracle的話,錯誤會提示ORA-錯誤代碼的
SQL77 2009-09-24
  • 打赏
  • 举报
回复
ALTER TABLE TBPlanCmdDt DROP constraint [D_RealNumber]
go
ALTER TABLE TBPlanCmdDt Alter COLUMN StockQty Number null

但是又提示:
约束 'D_RealNumber' 不属于表 'TBPlanCmdDt'

那个约束根本不是那个表的呀
xuejie09242 2009-09-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
感觉像ORACLE
[/Quote]
同意。。
jia_guijun 2009-09-24
  • 打赏
  • 举报
回复
手动操作,操作后导出脚本。
--小F-- 2009-09-24
  • 打赏
  • 举报
回复
感觉像ORACLE

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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