如何删除在 SQL Server 2008 中具有默认约束的列?
我的查询是
alter table tbloffers drop column checkin
我得到以下错误
ALTER TABLE DROP COLUMN 签入失败,因为一个或多个对象访问此列。
任何人都可以更正我的查询以删除有约束的列吗?
首先你应该删除有问题的DEFAULT constraint,然后你可以删除列
DEFAULT constraint
alter table tbloffers drop constraint [ConstraintName] go alter table tbloffers drop column checkin
但该错误可能由其他原因出现 - 例如用户定义的函数或SCHEMABINDING为其设置了选项的视图。
SCHEMABINDING
UPD: 完全自动删除约束脚本:
DECLARE @sql NVARCHAR(MAX) WHILE 1=1 BEGIN SELECT TOP 1 @sql = N'alter table tbloffers drop constraint ['+dc.NAME+N']' from sys.default_constraints dc JOIN sys.columns c ON c.default_object_id = dc.object_id WHERE dc.parent_object_id = OBJECT_ID('tbloffers') AND c.name = N'checkin' IF @@ROWCOUNT = 0 BREAK EXEC (@sql) END