日期:2014-05-18 浏览次数:20675 次
CREATE TABLE Course
(
Cno CHAR(10) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Periods SMALLINT CHECK(Periods>0),
Property CHAR(4) CHECK(Property in('必修','选修'))
)
--创建表
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 1
The object 'CK__Course1__Periods__64ECEE3F' is dependent on column 'Periods'.
Msg 4922, Level 16, State 9, Line 1
ALTER 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
------解决方案--------------------
--对于你的情况来说,这样就可以了。 --删除这个约束 alter table Course drop constraint CK__Course__Periods__0DAFOCB0 --不确定里面是0还是O。 --重新执行删除列成功 ALTER TABLE Course ALTER COLUMN Periods TINYINT
------解决方案--------------------
if object_id('tb') is not null
drop table tb
go
create 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__08012052
alter table tb drop constraint CK__tb__age__08012052
go
--再执行修改字段
alter table tb alter column age varchar(10)
------解决方案--------------------
把约束先干掉
------解决方案--------------------
既然是报错有依赖项 就是被约束了 找出约束删除就木问题叻
------解决方案--------------------
修改也是一样 先去掉约束 再修改
------解决方案--------------------
可以先禁用约束 再修改
------解决方案--------------------