0

这是一种概念证明草案,以使事情正常进行,但不想拥有完全废话的代码。对于我的数据库,我尝试使用 innoDB 获得真正的外键关系,但无法获得。

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

这很可怕吗?一切似乎都运行良好,我可以根据需要连接和关联 ID。使用外键对我的方法有什么好处(除了更新/删除级联)?

4

1 回答 1

0

要创建关系(master->detail),您必须始终自己提供键,使用mysql_insert_id自然键或应用程序生成的键。这FOREIGN KEY不会让工作。

什么FOREIGN KEY

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

FOREIGN KEY与它的好处相比,添加约束语句的成本很小。

于 2011-09-06T19:50:46.387 回答