如果我有两个表tableinfo和tablenamelist,那么外键如下:
Alter tableinfo add foreign key (name) references tablenamelist(name) on update cascade;
在哪些情况下会修改记录?
我的理解是,如果我在tablenamelist中将'bob'更改为'Bobby',它会在tableinfo中将'bob'的所有实例更新为'Bobby'。 如果我在tableinfo表中更改名称会发生什么?如果我将记录从'bob'更改为'tim',它会改变tableinfo中的记录吗?或者它只是将该记录重新分配给新名称?
答案 0 :(得分:1)
您的第一个假设是正确的,如果您更改tablenamelist
中的名称,它将在表tableinfo
中更改。
您的第二个假设不正确,如果您尝试将表tableinfo
中的名称更改为表tablenamelist
中不存在的内容,则会收到外键违规。
外键是一种约束,它强制在外表中存在键。
在关系数据库的上下文中,外键是一个引用 两个表之间的约束。
同样来自14.3.5.4. FOREIGN KEY Constraints
InnoDB拒绝任何尝试创建的INSERT或UPDATE操作 如果没有匹配项,则子表中的外键值 父表中的候选键值。