好的,我有 3 个表:
客户:
ClientID
(国际)汽车公司
clientName
(可变字符)
tnt_group:
groupID
(国际)汽车公司
ClientID
(int)外键
tnt_item:
itemID
(国际)汽车公司
itemNo
(整数)
groupID
(int)外键
现在,我需要为tnt_itemitemNo
中的每条记录生成一个记录,每个记录从 1 开始,以便每个客户看到他们的项目计数从 1 开始。我尝试添加一个触发器,如下所示:ClientID
BEGIN
SET NEW.itemNo = (
SELECT IF(t.itemNo IS NULL, 1, IFNULL(MAX(t.itemNo), 0) + 1)
FROM (
SELECT IFNULL(i.itemNo, 0) AS itemNo, g.groupID, g.ClientID, cg.ClientID AS cgClient, cg.groupID AS cgGroup
FROM tnt_group cg
INNER JOIN tnt_group g ON cg.ClientID = g.ClientID
INNER JOIN tnt_item i ON i.groupID = g.groupID
) AS t WHERE t.cgGroup = NEW.groupID
GROUP BY cgClient
);
END
这是有效的,在客户已经拥有至少一项资产的情况下,它获得最大值itemNo
然后添加一项。它失败的地方是,如果客户还没有任何物品,无论我做什么,它都会将第一个设置itemNo
为NULL
关于我做错了什么的任何提示?
小提琴