考虑关系数据库中具有列和行的两个表,如下所示:
Roll_no | Name | Dept_id |
---|---|---|
1 | ABC | 1 |
2 | DEF | 1 |
3 | GHI | 2 |
4 | JKL | 3 |
Dept_id | Dept_name |
---|---|
1 | A |
2 | B |
3 | C |
Roll_no是Student表的主键,Dept_id是Department表的主键,而Student.Dept_id是Department.Dept_id的外键
如果我们尝试执行以下两个SQL语句,将会发生什么?
- 更新学生集Dept_id = Null,其中Roll_on = 1
- 更新部门设置Dept_id = Null,其中Dept_id = 1
(A) (i)和(ii)都将失败
(B) B)(i)将失败,但(ii)将成功
(C) (i)将成功,但(ii)将失败
(D) (i)和(ii)都将成功答案: (C)
解释:
- 更新学生集Dept_id = Null,其中Roll_on = 1->这将成功,因为roll no是主键,我们可以将外键设置为NULL
- 更新部门集Dept_id = Null,其中Dept_id = 1->由于学生表(第1和第2卷)正在引用Dept_id,因此根据参照完整性约束,我们不能删除Dept_id。但是,如果我们要使用Cascaded,可以例外地克服它删除选项。
这个问题的测验
如果您在以上帖子中发现任何错误,请在下面发表评论