目录
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
确认是这个列名后删除即可