gpt4 book ai didi

mysql - mysql 表中的外键-是否需要目标数据?

转载 作者:行者123 更新时间:2023-11-30 23:36:16 24 4
gpt4 key购买 nike

我有两张 table

表A(id_A, name_A, info_A)

表B(id_B, A_id, some_data) 外键(A_id) 引用表A(id_A)

那么当我在 B 中插入一行,并将值 XXX 作为第二列 id_A 的值时,table_A 是否必须有一行 ID 为 XXX 的行?

如果不是,那么我应该对表施加什么约束,以便表 B 仅引用存在的 table_A 行?

最佳答案

是的,如果 TableA.id_A 是主键,而 TableB.A_id 有引用该主键的外键约束,那么在 TableB.A_id 可以包含 XXX 之前,XXX 值必须存在于 TableA.id_A 中。

这也意味着您不能删除或更改 TableA.id_A 中的 XXX 值,而值 XXX 存在于 TableB.A_id 中。您必须先删除、更改或设置 TableB.A_id 中的 NULL 值。您还可以使用 CASCADE 选项声明外键,以便 TableA 中的更改也自动应用于 TableB。但是从属表中永远不能有“孤立”值。

请注意,如果您对 TableA 或 TableB 使用 MyISAM 存储引擎,那么您对外键约束的定义将被静默忽略,并且数据库不会在两个表之间强制执行任何引用完整性。您必须对这两个表使用 InnoDB 存储引擎以获得对外键约束的支持。

关于mysql - mysql 表中的外键-是否需要目标数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com