0

如果我有两个表 tableinfo 和 tablenamelist 以及一个像这样的外键:

Alter tableinfo add foreign key (name) references tablenamelist(name) on update cascade;

哪些情况下会修改记录?

我的理解是,如果我在 tablenamelist 中将“bob”更改为“Bobby”,它会将 tableinfo 中的所有“bob”实例更新为“Bobby”。但是,如果我更改 tableinfo 表中的名称会发生​​什么?如果我将记录从“bob”更改为“tim”,它会更改 tableinfo 中的记录吗?还是只是将该记录重新分配给新名称?

4

1 回答 1

1

您的第一个假设是正确的,如果您在 中更改名称tablenamelist,它会在 table 中更改tableinfo

您的第二个假设不正确,如果您尝试将 table 中的名称更改为 tabletableinfo中不存在的名称,您将收到外键违规tablenamelist

外键是强制外表中存在键的约束。

外键

在关系数据库的上下文中,外键是两个表之间的引用约束。

同样来自14.3.5.4。外键约束

如果父表中没有匹配的候选键值,则 InnoDB 拒绝任何尝试在子表中创建外键值的 INSERT 或 UPDATE 操作。

于 2012-10-30T03:40:18.567 回答