怎么用SQL 语句修改数据类型

FSU 2008-10-23 09:13:44
Alter table RKD_MX ALTER COLUMN SL_JYBHG real

执行后提示

服务器: 消息 5074,级别 16,状态 1,行 1
对象 'DF_YG_RKD_Mx_ini_SL_JYBHG' 依赖于 列 'SL_JYBHG'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN SL_JYBHG 失败,因为有一个或多个对象访问此列。

SL_JYBHG 这个字段原来类型是numeric(18,2),需要修改成real
...全文
397 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2008-10-23
  • 打赏
  • 举报
回复
看名字应该是默认值约束
-狙击手- 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 happyflystone 的回复:]
引用 2 楼 happyflystone 的回复:
检查对象 'DF_YG_RKD_Mx_ini_SL_JYBHG'

本身语法对的

--try:
Alter table RKD_MX ALTER COLUMN SL_JYBHG real not null default 0


写错了,嘿嘿
[/Quote]
CN_SQL说的是对的
先删除'DF_YG_RKD_Mx_ini_SL_JYBHG' 就可以 修改了,因为你原来表有一个缺省
-狙击手- 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 happyflystone 的回复:]
检查对象 'DF_YG_RKD_Mx_ini_SL_JYBHG'

本身语法对的

--try:
Alter table RKD_MX ALTER COLUMN SL_JYBHG real not null default 0
[/Quote]

写错了,嘿嘿
-晴天 2008-10-23
  • 打赏
  • 举报
回复
先在表设计器中查查 'DF_YG_RKD_Mx_ini_SL_JYBHG' 是什么.
CN_SQL 2008-10-23
  • 打赏
  • 举报
回复
那么你要修改,就应该:



--删除约束
alter table t
drop constraint DF__t__col__7D78A4E7
go

--修改类型
alter table t
alter column col real
go
-狙击手- 2008-10-23
  • 打赏
  • 举报
回复
检查对象 'DF_YG_RKD_Mx_ini_SL_JYBHG'

本身语法对的

--try:
Alter table RKD_MX ALTER COLUMN SL_JYBHG real not null default 0
CN_SQL 2008-10-23
  • 打赏
  • 举报
回复
应该是你的这个列上有默认值约束,你得先把约束删除了:
下面是重现这个情况:


use tempdb
go

create table t (col numeric(18,2) default 0)
go

alter table t alter column col real
go



34,590

社区成员

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

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