0

为了得到一个类似mysql ENUM类型的列,我写了一个sql查询如下

ALTER TABLE [DbName].[dbo].[MediaContent]
ADD MediaType nvarchar(50) 
check(MediaType in ('audio','video','song','other')) 

这如所愿(用于测试):但现在我想删除此列但没有成功。似乎没有办法直接删除对其有约束的列。我该如何解决这个问题?我想删除此列并创建另一列。

这是我在删除时收到的错误消息

 The object 'CK__MediaCont__Media__14270015' is dependent on column 'MediaType'.
  ALTER TABLE DROP COLUMN MediaType failed 
because one or more objects access this         
column. (Microsoft SQL Server, Error: 5074)
4

3 回答 3

4

错误消息中引用的对象是约束的名称。您应该能够使用以下内容:

ALTER TABLE [DbName].[dbo].[MediaContent]
  DROP CONSTRAINT CK__MediaCont__Media__14270015
于 2014-02-20T16:48:10.700 回答
1

您需要首先删除错误消息中提到的检查约束,因为这会阻止您删除列。之后,您可以删除该列。

于 2014-02-20T16:31:33.980 回答
0

先删除约束,然后删除列,它会起作用

于 2014-04-08T10:28:59.873 回答