报的这样的错
- 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)
------解决方案--------------------
把约束先干掉
------解决方案--------------------
既然是报错有依赖项 就是被约束了 找出约束删除就木问题叻
------解决方案--------------------
修改也是一样 先去掉约束 再修改
------解决方案--------------------
可以先禁用约束 再修改
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
三楼的说的很好,就不必要多说了
------解决方案--------------------