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中,如果不是在kund2order中kundOrder并将其放入Kund2Order的新行(与Kundid一起)。
出于某种原因,它只是给我(节点:18328)unhandled -promiserectivewarning:错误:er_bad_null_error:column'kundid'不能为null
我对问题是什么感到有些困惑,在我打电话给此过程后,这两个表都是空的。问题是我的如果语句,还是其他问题?
这不是检查ID是否已经在表中的正确方法。当您使用SELECT
查询作为表达式时,它必须仅返回一行。您可以使用:
IF NOT EXISTS (SELECT * FROM kund2Order WHERE kundId = kundId2) THEN
,如果要插入刚刚插入kundOrder
的行的自动插入,则应使用LAST_INSERT_ID()
:
INSERT INTO kund2order VALUES (kundId2, LAST_INSERT_ID());