考虑关系数据库中具有列和行的两个表,如下所示:
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 where Dept_id = 1
(A) (i) 和 (ii) 都会失败
(B) B) (i) 会失败但 (ii) 会成功
(C) (i) 会成功但 (ii) 会失败
(D) (i) 和 (ii) 都会成功答案: (C)
解释:
- update Student set Dept_id = Null where Roll_on = 1 ->这会成功,因为 roll no 是主键,我们可以设置外键 NULL
- update Department set Dept_id = Null where Dept_id = 1 ->As Student table(Roll no 1 and 2) 是指 Dept_id 所以根据参照完整性约束我们不能删除 Dept_id。但是,如果我们想使用级联,我们可以例外地克服它删除选项。
这个问题的测验
如果您发现上面的帖子有任何错误,请在下面评论