MySQL外键关系vs mysql_insert_id来关联表

时间:2011-09-06 19:01:04

标签: php mysql foreign-keys relational-database mysql-insert-id

这是一种概念验证草案,可以让事情有效,但不希望有完全废话的代码。对于我的数据库,我试图使用innoDB获得真正的外键关系,但无法得到它。

我没有使用外键,而是决定在插入后拉出mysql_insert_id(),将其保存为变量,然后将该变量放入相关表中。

这太可怕了吗?一切似乎都运作良好,我能够根据需要连接和关联ID。使用外键会给我带来什么好处(除了更新/删除级联)?

1 个答案:

答案 0 :(得分:0)

要创建关系(master-> detail),您必须自己提供密钥,使用mysql_insert_id,自然键或应用程序生成的密钥。 FOREIGN KEY不会使 为您效劳。

FOREIGN KEY做的是

  • 帮助您强制执行数据的关系/完整性(因此“详细信息”记录不会指向无效的父级)
  • 处理主记录的删除或密钥更改(ON DELETE ...,ON UPDATE ...)。
  • 如果它还不存在,它还会在“master_id”-row的“详细信息”表中创建一个索引(好吧,你也可以在没有FOREIGN KEY的情况下这样做)
  • 还有一些记录目的,例如ERM工具可以从你的模式中重新设计关系模型(好吧,这一点是轻微的远景)

与其优点相比,添加FOREIGN KEY约束语句的成本很小。