问题描述
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 (将#修改为@)