gpt4 book ai didi

php - 防止自引用表中的主键和外键重复

转载 作者:行者123 更新时间:2023-11-30 22:03:59 26 4
gpt4 key购买 nike

例如:

我们有一个表 'device'id(primary key) 它通过 parent_dev_id(foreign key) 引用它自己。

如果您有一个带有 {id=1,parent_dev_id=NULL} 的设备并且您想向其中添加更多设备,那么下一个设备有 id=2 和 parent_id=1 或设备 id=2,parent_dev_id=NULL 有 2 个设备 id=3,id=4 但它们都有相同的 parent_dev_id=2

是否可以拒绝或限制某些id==parent_dev_id 的情况?因为我们不希望那成为可能

这是表格 enter image description here

如您所见,带有 {id=3,parent_dev_id=NULL} 的设备中还有另外 2 个设备例如。带有 {id=4,parent_dev_id=3} 和设备 {id=5,parent_dev_id=3} 的设备,它是设备内部的设备。是否可以限制 {id!=parent_dev_id}{id=3,parent_dev_id=NULL} 的第一行,这样你就不能添加 {parent_dev_id= 3}。如果我们这样做,tt 将是一个无休止的设备循环,这些设备在没有任何好处的情况下引用自己

最佳答案

您可以在此处执行 2 个解决方案选项:

  1. 在您的代码中编写 idparent_id 不相等的逻辑
  2. 在插入之前将数据库中的逻辑编写为触发器,以在 parent_idid 不能相等的情况下执行相同的操作。

您将遇到的问题是 id 是否是一个生成的 id。那么你要问的情况就很棘手了。在插入时,这可能是异常情况。但是,对于可能是有效问题的更新,您需要为 #2 触发更新 idparent_id 不相等的记录.

关于php - 防止自引用表中的主键和外键重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371741/

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