今天有朋友在问删除表中某一列的时候,报出了以下错误的原因:
消息 5074,级别 16,状态 1,第 1 行
对象'DF_Assets_BackUp_Creator_Default' 依赖于 列'Creator'。
消息 4922,级别 16,状态 9,第 1 行
由于一个或多个对象访问此列,ALTER TABLE DROP COLUMN Creator 失败。出现上面错误的原因很简单, 就是被删除的列具有约束,在删除该列之前,应该先删除该列的约束,包括主键约束,外键约束,默认值约束等,从上面错误信息中约束的名称来看,DF_Assets_BackUp_Creator_Default应该是列Creator的默认值约束。当然了,对于默认值约束只有在使用sql语句删除列的时候会报这个错误,如果是在对象源管理器中手动删除某列,它会自动将该列的默认值约束删除掉,就不会报该错误了。如果要使用sql语句删除,那么可以先删除默认值约束,sql语句如下:
alter table Assets_BackUp
drop constraint DF__Assets_Ba__Creat__3CB118CA
alter table Assets_BackUp
drop column Creator
注意:在手动删除列时,只有默认值约束会被自动删除掉,但如果该列具有主键约束或外键约束,还是会报错的,如下图:
这个时候,还是需要我们先处理掉约束的问题,再删除该列。也是最后没有办法的办法。)