数据库SQL的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/19 11:25:30
不是说的,数据库中的记录,当被另一个表引用的时候,我们删除这条记录,系统会拒绝执行的吗?
数据库中有两个表
专业表(专业代号,专业名称,招收人数):专业代号为主键
学生表(学号,姓名,性别,专业代号):学号为主键,专业代号为外键,引用专业表
在专业表中有一条专业代号为'P003003'的记录,在学生表中,有一个学生选择了'P003003'的专业,也就是说,专业表中的'P003003'的记录被学生表中引用了,为什么,我删除掉专业表中的'P003003'的记录?系统还是给执行了,而学生表中'P003003'的记录仍然存在,我是这样想的:既然不是级联删除的话,系统应该是会拒绝执行的啊,这样的数据的一致性不是被破坏了吗?到底是怎么一回事?

在Create table(创建学生表时)时,要加上约束:
foreign key(专业代号) references 专业表(专业代号) on delete cascade

on delete cascade是级联删除
on delete no action 是受限删除
根据你的意思,你要加上 on delete no action 约束!

同意楼上的回答。补充一点是:你可以修改表,把约束加上就行了。