了解数据库中的引用完整性

时间:2014-02-10 15:46:21

标签: mysql sql database

我刚开始学习数据库。我的教授提到了“参照完整性”一词,我试图理解它。

这是我的理解。如果我有

表管理器:Manager_id,Manager_name 表Employee:Employee_id,Manager_id,Employee_name

Manager_id是“经理表”的主键。 “员工表”的外键

如果我从Manager中删除/更新任何Manager_id,则具有该管理员ID的所有条目将被删除/更新。这是级联更新或删除。

但是如果我尝试删除或更新“员工表”中的manager_id怎么办?它会相应地从Manager表中删除条目吗?

2 个答案:

答案 0 :(得分:2)

  

如果我从Manager删除/更新任何Manager_id,那么所有条目   拥有该经理ID将被删除/更新。多数民众赞成   更新或删除。

仅当您为外键定义了UPDATE / DELETE规则时才会发生这种情况。默认情况下,级联UPDATES / DELETES被禁用,因为它可能会导致数据发生意外更改。

  

但是,如果我尝试删除或更新“员工”中的manager_id,该怎么办?   表“?是否会相应地删除Manager中的条目   表

它只删除单个员工,因为相关经理也可以被其他员工引用。

答案 1 :(得分:1)

“级联”部分从主键到外键,但不是相反。

当您删除Manager1时,让我们说,那么Employee1将Manager1作为管理员是没有意义的,因为它们不再被定义。

但是当您将Employee1的经理从Manager1更改为Manager2时 - 假设两位经理仍然存在,那么这仍然很好。