gpt4 book ai didi

mysql - 在 if 语句中插入的 SQL 问题

转载 作者:行者123 更新时间:2023-11-29 09:48:38 24 4
gpt4 key购买 nike

DROP PROCEDURE IF EXISTS kund2orderNew;
DELIMITER ;;
CREATE PROCEDURE kund2orderNew(kundId2 INT)
BEGIN
IF kundId2 <> (SELECT kundId FROM kund2order) THEN
INSERT INTO kundOrder VALUES ();
INSERT INTO kund2order VALUES (kundId2, (SELECT id FROM kundOrder));
END IF;
END
;;
DELIMITER ;

好吧,我在这里做错了什么吗?我想做的是检查 kundId 是否在 kund2order 中,如果不是,那么我想要做的是在 kundOrder 表中创建一个新行,仅使用默认值,然后从该行中获取最近创建的 id kundOrder 并将其放入 kund2order 中的新行中(与 kundId 一起)。

出于某种原因,它只是给了我(节点:18328)UnhandledPromiseRejectionWarning:错误:ER_BAD_NULL_ERROR:列“kundId”不能为空

我对问题是什么感到有点困惑,在我调用此过程后,两个表都是空的。是我的 if 语句有问题还是其他什么问题?

最佳答案

这不是检查 ID 是否已在表中的正确方法。当您使用 SELECT 查询作为表达式时,它必须仅返回一行。您可以使用:

IF NOT EXISTS (SELECT * FROM kund2Order WHERE kundId = kundId2) THEN

如果你想插入刚刚插入kundOrder的行的自动增量,你应该使用LAST_INSERT_ID():

INSERT INTO kund2order VALUES (kundId2, LAST_INSERT_ID());

关于mysql - 在 if 语句中插入的 SQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55208801/

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