我正在使用cleardb
mysql 数据库php
。情况是这样的:
我在beneficiary
表中添加记录。并在添加后我正在获取last_inserted _id
. 并使用它id
来添加付款方式beneficiary_payment_info
。它在大多数情况下都能正常工作。但是,有时我在错误日志中发现以下消息:
完整性约束违规:1452 无法添加或更新子行:外键约束失败 (
cdb_85c337008c
.beneficiary_payment_info
, CONSTRAINTbeneficiary_payment_info_ibfk_1
FOREIGN KEY (ben_id
) REFERENCESbeneficiary
(id
))'
当我签入数据库时,我得到了以下屏幕截图:
如您所见,第一个表中有一个 id 6073
,但它不在第二个表中。正因为如此,我得到了错误。第一个表中有 2 条相同的记录(6073 和 6081),因为我猜是用户第二次请求该页面。
我怎么解决这个问题?请指导我。谢谢。
编辑(来自 clearDB 的回复)
解决此问题的最佳方法是停止涉及 auto_increment 值。
您可以使用子查询,而不是尝试猜测或设置它们,类似于以下样式:
INSERT INTO CHILDREN (ParentID, FirstName, LastName)
VALUES ((SELECT ID FROM PARENTS WHERE FirstName = 'John' AND LastName = 'Doe'),
'Jane', 'Doe');