在SQL數據庫中使用SQL語句(格式:alter table [tablename] alter column [colname] [newDataType])修改某表的字段類型時,報一下錯誤:
“**********************************
對象'DF__******' 依賴於 列'column1'。
***********************************
由於一個或多個對象訪問此列,ALTER TABLE ******** 失敗。”
根據上述提示在網上搜索結果,得知發生該錯誤的原因在於要修改的字段存在Default約束,解決方法:
1.查找出表中該字段的約束名稱(或根據已有的提示及對象'DF__******')
declare @name varchar(50)
select @name =b.name from sysobjects b join syscolumns a on b.id = a.cdefault
where a.id = object_id('TableName')
and a.name ='ColumName'
2. 刪除存在的約束
exec('alter table TableName drop constraint ' + @name)
3. 再執行修改字段類型的腳本即可
綜合查閱資料發現:將表中的字段設置為NOT NULL(不為空)、給字段增加Default值(默認值)這樣的操作都會給該字段添加約束,增加了這些約束后,在用SQL腳本修改字段類型、刪除字段的時候均會發生類似錯誤,需要查找該字段上已存在的約束,並刪除存在的約束,再次執行修改/刪除腳本即可。
資料引用: