当主表更新时,外键是否会自动更新?

vep*_*emp 5 database sql-server rdbms foreign-keys primary-key

简单的数据库设计

上面是我的简单数据库设计,只是想获取有关事情如何发生的信息,因为我对数据库非常陌生。以下是我的问题:

  1. 当我更新walls表中的wall_id时,wall_categories表中的wall_id是否也会更新?因为 wall_categories 表中的 wall_id 引用walls 表中的 wall_id。

  2. 与walls表中的desktop_id相同,因为它是引用desktop_wall表中的desktop_id的外键,所以当我更新walls表中的desktop_id时,deskotp_wall中的desktop_id也会更新吗?

  3. 如果默认不更新,该怎么办?

多谢!

Rah*_*thi 2

不,外键不会自动更新。您需要更新自己引用的表中的外键,否则会导致引用完整性异常。

要自动更新外键,您可以使用TRIGGERS

编辑:-

正如 sqlvogel 在评论中所建议的,如果您的 DBMS 支持级联更新,则无需为此创建触发器。

在这种情况下,如果您具有级联引用完整性约束会更好

通过使用级联引用完整性约束,您可以定义当用户尝试删除或更新现有外键指向的键时 SQL Server 采取的操作。