数据库如何实现对于数据完整性的控制?
0 288
0
该提问暂无详细描述
收藏
2021-02-19 10:52 更新 小眼的铁板烧 •  3526
共 2 个回答
高赞 时间
0

影响完整性的操作

可以影响完整性的操作:INSERT、UPDATE、DELETE

收藏
2021-02-19 11:01 更新 小眼的铁板烧 •  3526
0

维护完整性的策略

参照关系

当在参照关系中插入或修改一个元组造成了不一致性时,可采取的策略:

  • 拒绝执行:不允许执行该操作。
  • 级联操作:在被参照关系中插入或修改对 应的元组。
  • 置空操作:将参照关系中对应的值置空
被参照关系

当删除或修改被参照关系的元组造成了不一致性时,可采取的策略:

  • 拒绝执行:不允许执行该操作。
  • 级联操作:将参照关系中对应的元组一并删除或修改。
  • 置空操作:将参照关系中对应的值置空。
用户定义完整性控制策略

任何试图违背用户定义完整性的数据更新操作都是不允许的。 系统将拒绝执行相应的操作。

SQL中完整性控制的实现

实体完整性

SQL拒绝任何试图违背实体完整性的数据更新操作。

参照关系

• SQL拒绝任何试图在参照关系中产生外码的值与被参照关系主码的值不对应的修改操作。 • SQL拒绝任何试图在参照关系中产生外码的值与被参照关系主码的值不对应的插入操作。

被参照关系

当删除或修改被参照关系中数据时: • ON UPDATE:如果试图修改被参照关系中某记录的主码,而该主码恰巧在参照关系中被引用,则控制策略由ON UPDATE决定。 • ON DELETE:如果试图删除被参照关系中某记录,而该记录主码的值恰巧在参照关系中被引用,则控制策略由ON DELETE决定。

用户定义完整性

SQL拒绝任何试图违背用户定义完整性的数据更新操作。

相关语句

  • 拒绝操作 — NO ACTION, 默认
  • 级联操作 — CASCADE
  • 置空操作 — SET NULL

NO ACTION:拒绝删除或修改被参照关系的记录。 CASCADE:当删除或修改被参照关系的记录时,自动删除参照关系中对应的记录。 SET NULL:当删除或修改被参照关系的记录时,若参照关系的外码未设置“NOT NULL”限制,可将对应的记录外码值置空。

收藏
2021-02-19 11:02 更新 空心人 •  3374