我刚开始学习数据库。我的教授提到了“参照完整性”一词,我试图理解它。
这是我的理解。如果我有
表管理器:Manager_id,Manager_name 表Employee:Employee_id,Manager_id,Employee_name
Manager_id是“经理表”的主键。 “员工表”的外键
如果我从Manager中删除/更新任何Manager_id,则具有该管理员ID的所有条目将被删除/更新。这是级联更新或删除。
但是如果我尝试删除或更新“员工表”中的manager_id怎么办?它会相应地从Manager表中删除条目吗?
答案 0 :(得分:2)
如果我从Manager删除/更新任何Manager_id,那么所有条目 拥有该经理ID将被删除/更新。多数民众赞成 更新或删除。
仅当您为外键定义了UPDATE / DELETE规则时才会发生这种情况。默认情况下,级联UPDATES / DELETES被禁用,因为它可能会导致数据发生意外更改。
但是,如果我尝试删除或更新“员工”中的manager_id,该怎么办? 表“?是否会相应地删除Manager中的条目 表
它只删除单个员工,因为相关经理也可以被其他员工引用。
答案 1 :(得分:1)
“级联”部分从主键到外键,但不是相反。
当您删除Manager1时,让我们说,那么Employee1将Manager1作为管理员是没有意义的,因为它们不再被定义。
但是当您将Employee1的经理从Manager1更改为Manager2时 - 假设两位经理仍然存在,那么这仍然很好。