首页 > 试题广场 >

关于维护参照完整性约束的策略,下列选项描述不正确的是()

[单选题]

关于维护参照完整性约束的策略,下列选项描述不正确的是()

  • 对于任何违反了参照完整性约束的数据更新,系统一概拒绝执行

  • 当删除被参照表的一个元组造成了与参照表的不一致,则删除参照表中的所有造成不一致的元组

  • 当修改被参照表的一个元组造成了与参照表的不一致,则修改被参照表中的所有造成不一致的元组

  • 当删除或修改被参照表的一个元组造成了不一致,则将参照表中的所有造成和不一致的元组的对应属性设置为空值

参照完整性共分四种模式:不执行操作、级联、置空、设置默认值。
B选项对应级联操作,即主键列(被参照表)删除同时外键列(参照列)对应列也被删除;
C选项也对应级联操作,但应为修改外键列(参照表)中的数据;
D选项对应置空,即主键列数据删除或者修改时外键列对应数据被置为空值;
设置默认值模式为主键列的修改和删除使对应外键列数据被置为设定的默认值
发表于 2022-03-13 16:28:50 回复(2)
不是拒绝执行么,怎么能改
发表于 2022-03-13 11:06:38 回复(0)

参照完整性约束的实现策略 当用户的操作违反了上述规则时,SQL 提供了两种可选方案供数据库实现者使用:

RESTRICT(限制策略):限制策略是SQL的默认策略,任何违反参照完整性的更新均被系统拒绝。

CASCADE(级联策略):当用户删除或更新外键所指向的键时,SQL提供了另一种方案,即级联策略。 通过在REFERENCES子句后添加ON DELETE 和 ON UPDATE子句实现:[ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ],
如果没有指定ON DELETE 或 ON UPDATE,则默认为NO ACTION。
ON DELETE NO ACTION 指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 DELETE。
ON UPDATE NO ACTION 指定如果试图更新某行中的键值,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 UPDATE。

CASCADE 允许在表间级联键值的删除或更新操作,这些表的外键关系可追溯到执行修改的表。(注:不能为任何具有 timestamp 列的外键和主键指定 CASCADE。)
ON DELETE CASCADE 指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则也将删除所有包含那些外键的行。如果在目标表上也定义了级联引用操作,则对从那些表中删除的行同样采取指定的级联操作。
ON UPDATE CASCADE 指定如果试图更新某行中的键值,而该行的键值由其它表的现有行中的外键所引用,则所有外键值也将更新成为该键指定的新值。如果在目标表上也定义了级联引用操作,则对在那些表中更新的键值同样采取指定的级联操作。

发表于 2022-06-28 22:21:01 回复(0)
C选项 表达错误,应该是修改参照表中所以不一致的元组
发表于 2022-04-08 15:23:48 回复(0)
被参照表是主键列
发表于 2023-09-15 10:51:19 回复(0)
有点懵了, 参照表和被参照表混了
发表于 2023-07-31 20:47:24 回复(0)
C项,把第2个 被参照表 改成 参照表 就对了。
发表于 2022-07-20 09:30:02 回复(0)