ALTER TABLE怎么用?

Times2001 2004-12-15 09:37:47
tbl_card 表中的card_no原是varchar(10),且card_no是主键之一.
我用下面的语句,但报错
alter table tbl_card alter column card_no varchar(15)
报错如下:
服务器: 消息 5074,级别 16,状态 8,行 1
对象 'tbl_card' 依赖于 列 'card_no'。
服务器: 消息 4922,级别 16,状态 1,行 1
ALTER TABLE ALTER COLUMN card_no 失败,因为有一个或多个对象访问此列。

请问如何修改这个card_no?

...全文
169 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
澫大醉 2004-12-15
  • 打赏
  • 举报
回复
先删除依赖关系,再进行更改。
vinsonshen 2004-12-15
  • 打赏
  • 举报
回复
因为card_no是主键之一,所以你不能直接更改,得像上面先把主键约束去掉,再更改,再创建主键
vinsonshen 2004-12-15
  • 打赏
  • 举报
回复
alter table 表名 drop constraint 约束名

alter table 表名 alter column card_no varchar(15)

alter table 表名 add constraint PK_card_no primary key (card_no)
yown 2004-12-15
  • 打赏
  • 举报
回复
对象 'tbl_card' 依赖于 列 'card_no'。

先要删除依赖,语法没问题的,看'card_no''tbl_card'存在何种依赖,是主码,约束?
NinGoo 2004-12-15
  • 打赏
  • 举报
回复
ALTER COLUMN

指定要更改给定列。如果兼容级别是 65 或小于 65,将不允许使用 ALTER COLUMN。有关更多信息,请参见 sp_dbcmptlevel。

要更改的列不能是:

数据类型为 text、image、ntext 或 timestamp 的列。


表的 ROWGUIDCOL 列。


计算列或用于计算列中的列。


被复制列。


用在索引中的列,除非该列数据类型是 varchar、nvarchar 或 varbinary,数据类型没有更改,而且新列大小等于或者大于旧列大小。


用在由 CREATE STATISTICS 语句创建的统计中的列。首先用 DROP STATISTICS 语句删除统计。由查询优化器自动生成的统计会由 ALTER COLUMN 自动除去。


用在 PRIMARY KEY 或 [FOREIGN KEY] REFERENCES 约束中的列。


用在 CHECK 或 UNIQUE 约束中的列,除非用在 CHECK 或 UNIQUE 约束中的可变长度列的长度允许更改。


有相关联的默认值的列,除非在不更改数据类型的情况下允许更改列的长度、精度或小数位数。
有些数据类型的更改可能导致数据的更改。例如,将数据类型为 nchar 或 nvarchar 的列更改为 char 或 varchar 类型,将导致扩展字符的转换。有关更多信息,请参见 CAST 和 CONVERT。降低列的精度和小数位数可能导致数据截断。

NinGoo 2004-12-15
  • 打赏
  • 举报
回复
对象 'tbl_card' 依赖于 列 'card_no'

看看这个tbl_card是什么,现解除这个依赖的对象

语法是没错的,注意看错误提示

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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