目錄
1.問題
2.解決辦法
1.問題
?刪除某個列名的時候,提示錯誤'因為有一個或多個對象訪問此列'
2.解決辦法
? 2.1 添加或刪除表新列名
? ? 將表中的字段設置Default 或 NOT NULL 都會給該字段添加約束,增加了這些約束后,再SQL腳本修改類型、刪除會發生類似錯誤,先要查找該字段上已存在的約束名稱,并刪除存在的約束,才可以進行修改/刪除腳本。
? ? ?NULL或沒有默認值的,則沒有約束,可以直接刪除
? ?ALTER TABLE ?A_TEST? ?ADD? ? CNT INT DEFAULT 0 ALTER TABLE ?A_TEST? ? DROP? COLUMN CNT
? ?2.2 解決
? ? 1.找約束
? ? SELECT? B.NAME FROM SYSOBJECTS B JOIN SYSCOLUMNS A ON B.ID = A.CDEFAULT
? ? WHERE A.ID = OBJECT_ID('TABLE_NAME')? ?--TABLE_NAME =A_TEST
? ? ?AND A.NAME ='COLUM_NAME'? ?--COLUM_NAME=CNT?
? ?
SELECT? B.NAME
FROM SYSOBJECTS B JOIN SYSCOLUMNS A ON B.ID = A.CDEFAULT
WHERE A.ID = OBJECT_ID('A_TEST')? ?--TABLE_NAME =A_TEST
AND A.NAME ='CNT?'? ?--COLUM_NAME=CNT
? ?2.刪除約束:約束的名稱很復雜
?語句的方法
??EXEC('ALTER TABLE TABLE_NAME DROP CONSTRAINT ' + 約束名稱)
??EXEC('ALTER TABLE A_test DROP CONSTRAINT ' + 約束名稱)
點擊這個表→約束→點擊某個約束→DROP
確認是這個列名后刪除即可