微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不能删除列 - MS SQL

如何解决不能删除列 - MS SQL

我刚刚创建了一个新表,我想删除其中的“person”列,但出现错误 -

CREATE TABLE new_info(
info_id INT IDENTITY (1,1) PRIMARY KEY,title VARCHAR(500) NOT NULL,person VARCHAR(50) NOT NULL UNIQUE
)

在这之后 -

ALTER TABLE new_info
DROP COLUMN person;

我收到此错误 -

Msg 5074,Level 16,State 1,Line 1
The object 'UQ__informat__DC4560C2776204D1' is dependent on column 'person'.
Msg 4922,State 9,Line 1
ALTER TABLE DROP COLUMN person Failed because one or more objects access this column.

知道为什么,或者是什么原因造成的吗?

解决方法

先删除唯一约束,然后才能删除列 这就是为什么总是最好创建命名约束

ALTER TABLE new_info DROP CONSTRAINT UQ__informat__DC4560C2776204D1 

然后您可以删除您的列。 正如 Martin 所评论的,您也可以在一个声明中做到这一点

ALTER TABLE new_info DROP UQ__informat__DC4560C2776204D1,COLUMN person

最好创建这样的表

CREATE TABLE new_info(
  info_id INT IDENTITY(1,1),title VARCHAR(500) NOT NULL,person VARCHAR(50) NOT NULL,constraint PK_new_info_InfoID primary key (info_id),constraint IX_new_info_person UNIQUE (person)
)

现在您至少会在错误消息中获得更好的信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。