当前位置: 代码迷 >> Sql Server >> 表中的列删不掉
  详细解决方案

表中的列删不掉

热度:21   发布时间:2016-04-27 14:54:27.0
【求助】表中的列删不掉!



报的这样的错

SQL code
CREATE TABLE Course(Cno CHAR(10) PRIMARY KEY,Cname VARCHAR(20) NOT NULL,Periods SMALLINT CHECK(Periods>0),Property CHAR(4) CHECK(Property in('必修','选修')))


表是这样的

我想是那个CHECK的约束导致我删不掉的 Cname是可以删掉的 那么像这样的列该怎么删除呢???

------解决方案--------------------
先删掉约束,再删除表
------解决方案--------------------
先删掉约束,再修改你的字段
------解决方案--------------------
SQL code
--创建表CREATE TABLE Course1(Cno CHAR(10) PRIMARY KEY,Cname VARCHAR(20) NOT NULL,Periods SMALLINT CHECK(Periods>0),Property CHAR(4) CHECK(Property in('必修','选修')))--执行删除列失败ALTER TABLE Course1 ALTER COLUMN Periods TINYINT/*Msg 5074, Level 16, State 1, Line 1The object 'CK__Course1__Periods__64ECEE3F' is dependent on column 'Periods'.Msg 4922, Level 16, State 9, Line 1ALTER TABLE ALTER COLUMN Periods failed because one or more objects access this column.*/--删除这个约束alter table Course1 drop constraint CK__Course1__Periods__64ECEE3F--重新执行删除列成功ALTER TABLE Course1 ALTER COLUMN Periods TINYINT
------解决方案--------------------
SQL code
--对于你的情况来说,这样就可以了。--删除这个约束alter table Course drop constraint CK__Course__Periods__0DAFOCB0 --不确定里面是0还是O。--重新执行删除列成功ALTER TABLE Course ALTER COLUMN Periods TINYINT
------解决方案--------------------
SQL code
if object_id('tb') is not null   drop table tbgocreate table tb( id int, name varchar(10), age int check(age>10))go--修改出错alter table tb alter column age varchar(10)/*消息 5074,级别 16,状态 1,第 1 行对象'CK__tb__age__08012052' 依赖于 列'age'。消息 4922,级别 16,状态 9,第 1 行由于一个或多个对象访问此列,ALTER TABLE ALTER COLUMN age 失败。*/--先删除约束CK__tb__age__08012052alter table tb drop constraint CK__tb__age__08012052go--再执行修改字段alter table tb alter column age varchar(10)
------解决方案--------------------
把约束先干掉
------解决方案--------------------
既然是报错有依赖项 就是被约束了 找出约束删除就木问题叻
------解决方案--------------------
修改也是一样 先去掉约束 再修改
------解决方案--------------------
可以先禁用约束 再修改
------解决方案--------------------
探讨

引用:

修改也是一样 先去掉约束 再修改



然后我就这样写了

alter table Course drop constraint CK__Course__Periods__0DAF0CB0

ALTER TABLE Course ALTER COLUMN Periods TINYINT

ALTER TABLE Co……

------解决方案--------------------
探讨

可以先禁用约束 再修改

------解决方案--------------------
三楼的说的很好,就不必要多说了

------解决方案--------------------
探讨
ALTER TABLE Course ADD constraint CK__Course__Periods__0DAF0CB0
(ALTER TABLE Course ADD constraint CHECK(Periods>0))【或者这样】
  相关解决方案