插入if语句时出现SQL问题

时间:2019-03-17 15:40:14

标签: mysql database stored-procedures

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语句还是其他?

1 个答案:

答案 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());