首页 > 试题广场 >

假设Students表中有主键SCode,Score表中有外

[单选题]

假设Students表中有主键SCode,Score表中有外键 stuNo列,stuNo引入Scode列来实施引用完整性约束,此时如果使用SQL

Update Students set Scode = 001 where scode = 002 ___

( )。

  • 肯定会产生更新错误
  • 可能会更新Students表中的两行数据
  • 可能会更新Score表中的一行数据
  • 可能会更新Students表中的一行数据
第一次做,我选的A告诉我答案是D。这次上来就选D了,告诉我答案是A。奶奶个腿
发表于 2018-10-02 23:05:29 回复(3)
Score表中有外键stuNo,引用Students表的SCode列。因此在对Students表修改SCode的值的时候,要先对Score进行修改,否则会出错。
发表于 2017-08-22 17:10:18 回复(0)
依据参数完整性规则,对被参照关系(这里是Students)的修改如果没有显示的定义违约处理(如级连修改,删除),那么由于可能会导致参照关系(这里是Score)出现外码与Students中的主码域不同的情况,则默认会报错。
在这里A是默认的违约处理规则。
B由于主键必唯一,则绝对不会出现有两行被修改的情况,必错
C如果成立,则必须要定义违约处理规则为级连修改,那么D也必然正确
D正确的前提,是C的条件成立。
由于题目没有定义违约处理规则,则认为是默认的,这里选A
编辑于 2019-03-04 01:45:39 回复(1)
感觉题有问题,如果不考虑主键冲突,是可以实现更改的,上个截图
我自己的测试结果如下:

不一定会出错的,除非被修改的值被其它表作为外键引用到了。
编辑于 2018-09-26 15:58:11 回复(0)
昨天才做过,今天答案就变了?
发表于 2019-03-02 22:11:29 回复(0)
一样的题目,不一样的答案。啥情况??
发表于 2018-01-25 11:11:51 回复(0)
如果Score中没有数据或没有使用了'002'的数据,此时更改Students中主键字段值,会出现异常吗?
发表于 2017-11-02 15:29:26 回复(0)
,不能这样更新,student的主键约束出现作用了
发表于 2017-10-16 10:49:58 回复(0)
是因为在创建子表的时候没有级联更新吗?还是说有可能和主表冲突
发表于 2017-08-03 11:16:06 回复(0)