SQL语句更改关键字段的数据类型

popcorn2255 2006-11-27 10:22:03
非主键的字段更改数据类型很方便,用以上语句可以实现,
alter table 表名 alter column 字段名 变更后的字段类型
但若是关键字段,带有主键,并且字段类型为用户自定义类型,具有默认值的情况下,用上述语句会出现错误,现假设

表为TABLE1,关键字段为FIELD1,主键为PK_FIELD1,关键字段的数据类型为用户自定义数据类型 cha_field1,实际为CHAR(10),默认值为dbo.D_field1
现要求将字段类型改为 varchar(20),默认值去除

错误提示如下:

服务器: 消息 5074,级别 16,状态 1,行 1
对象 'D_field1' 依赖于 列 'field1'。
服务器: 消息 5074,级别 16,状态 1,行 1
对象 'PK_field1' 依赖于 列 'field1'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN field1 失败,因为有一个或多个对象访问此列。
...全文
741 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
popcorn2255 2006-11-27
  • 打赏
  • 举报
回复
用ALTER TABLE 表名 DROP CONSTRAINT D_field1去默认约束值时,出现

服务器: 消息 3733,级别 16,状态 2,行 1
约束 'D_field1 不属于表 'table1'。
服务器: 消息 3727,级别 16,状态 1,行 1
未能除去约束。请参阅前面的错误信息。

因为该默认约束是用户自定义的,事先设好的,用于多个字段的默认值
popcorn2255 2006-11-27
  • 打赏
  • 举报
回复
那去除默认约束值 D_field1 的语句呢
jackiecheng001 2006-11-27
  • 打赏
  • 举报
回复
ALTER TABLE 表名 DROP CONSTRAINT PK_FIELD1;
alter table 表名 alter column filed **(newtype) ;
ALTER TABLE 表名 ADD CONSTRAINT CONSTRAINT PK_FIELD1;

popcorn2255 2006-11-27
  • 打赏
  • 举报
回复
这样的话,求这些语句

1.更改字段默认值语句
2.去除字段约束语句
3.添加字段约束语句
caixia615 2006-11-27
  • 打赏
  • 举报
回复
cast(cha_field1 as varchar(20))
tmc1703 2006-11-27
  • 打赏
  • 举报
回复
如果有约束的话,还要把约束断开才能更新字段,很麻烦的。
popcorn2255 2006-11-27
  • 打赏
  • 举报
回复
能提供具体语句吗
iamltd 2006-11-27
  • 打赏
  • 举报
回复
按照字段、类型、默认值的顺序添加字段,按照相反顺序来修改字段


^_^
popcorn2255 2006-11-27
  • 打赏
  • 举报
回复
呵,已解决

22,207

社区成员

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

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