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语句还是其他?
答案 0 :(得分:1)
这不是检查表中是否已存在ID的正确方法。当您使用SELECT
查询作为表达式时,它只需要返回一行。您可以使用:
IF NOT EXISTS (SELECT * FROM kund2Order WHERE kundId = kundId2) THEN
如果要插入刚插入kundOrder
的行的自动增量,则应使用LAST_INSERT_ID()
:
INSERT INTO kund2order VALUES (kundId2, LAST_INSERT_ID());