SQLserver 删除含默认值的列出现以下错误:
消息 5074,级别 16,状态 1,第 79 行
对象’DF__student__入学时间__3F466844’ 依赖于 列’入学时间’。
消息 4922,级别 16,状态 9,第 79 行
由于一个或多个对象访问此 列,ALTER TABLE DROP COLUMN 入学时间 失败。
接下来介绍删除操作
例如以下例子,创建一个学生表:
create table student
(学号 char(9) primary key,
姓名 char(20) unique,
性别 char(2),
年龄 smallint,
所在系 char(20)
);
再 添加新列 ‘入学时间 date’,并取默认值为‘2020-09-14’.
alter table student
add 入学时间 date default '2020-09-14'
插入元组数据:
接下来执行以下操作:
删除student 表中的‘入学时间’列
alter table student
drop column 入学时间;
则会出现以下错误:
消息 5074,级别 16,状态 1,第 79 行
对象’DF__student__入学时间__3F466844’ 依赖于 列’入学时间’。
消息 4922,级别 16,状态 9,第 79 行
由于一个或多个对象访问此 列,ALTER TABLE DROP COLUMN 入学时间 失败。
此时我们应该要先删除 入学时间 的约束
ALTER TABLE 表名 DROP CONSTRAINT 约束名
而约束名怎么找?
打开student表–约束–>入学时间表名
也可以直接 右键 表名 [DF__student__入学时间__3F466844]–>编写约束脚本为–>DROP到–>新查询编辑器窗口 直接复制里面的删除语句
ALTER TABLE [dbo].[student]
DROP CONSTRAINT [DF__student__入学时间__3F466844]
执行该语句:
即完成删除设置了默认值的列。