【发布时间】:2019-03-17 15:40:14
【问题描述】:
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 一起)。
由于某种原因,它只给了我 (node:18328) UnhandledPromiseRejectionWarning: Error: ER_BAD_NULL_ERROR: Column 'kundId' cannot be null
我有点困惑问题是什么,在我调用此过程后两个表都是空的。问题是我的 if 语句还是其他原因?
【问题讨论】:
-
除其他问题外,您的第一个
IF具有明显的潜在问题,即RHS 上的子查询可能返回多个记录。也许您打算使用WHERE NOT IN ...,但无论如何,这将有助于您的问题更好地解释您在这里尝试做什么。 -
如果 kundId2 不匹配 kund2order 表中的任何 kundId 我想执行下面的插入语句。如果它确实匹配某些东西,那么我不想发生任何事情
-
这不是您检查
kundid2是否在表格中的方式。 -
@Barmar 那我该怎么做呢?
标签: mysql database stored-procedures