插入源自 FK 的表时,具有 FK 的表的外键错误

问题描述

我一直在尝试在 PHP 中运行此查询

INSERT INTO inventory (prodID,userID,qty) VALUES ((SELECT ID FROM products WHERE cod = :COD),9,:QTY);

它没有执行,所以我把它放在MysqL工作台中,看看是否有错误。 我一直这样做,这出现了:

错误代码:1452。无法添加或更新子行:外键约束失败 (database.expiration,CONSTRAINT inventoryID FOREIGN KEY ({{1} }) 参考 inventoryID (inventory))

我不明白为什么 FK 到期限制会出现错误。 InventoryID 是库存的 PK AI。有人可以帮我吗?

编辑:

表架构:

产品

  • ID - PK AI
  • 鳕鱼
  • 姓名
  • standard_expiration

库存

用户

  • 用户 ID - PK AI
  • 姓名

到期

  • ExpID - PK AI
  • inventoryID - FK
  • 输入日期
  • estimated_exp

我在 Inventory 上插入后有一个触发器来注册最后一个 ID 和输入到期日期,同时还通过添加当前时间 + standard_exp 来计算estimated_exp。我是这样写的:

inventoryID

关于PHP: 我使用了 PDO::errorInfo() 并得到了 SET @inv = (SELECT last_insert_id()); SET @prod = (SELECT (prodID) from inventory WHERE inventoryID = @inv); SET @stdexp = (SELECT (standard_exp) from products WHERE ID = @prod); SET @estmexp = ( SELECT ADDDATE(curdate(),@stdexp)); INSERT INTO expiration (inventoryID,input_Date,estimated_exp) VALUES (@inv,curdate(),@estmexp);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)