我有以下两个表AB

我想将表A中的记录插入表B中,但是当将新记录添加到表orderNum中时具有新的B值。

我有以下查询,但无法正常工作。

INSERT INTO B (refId, userId, orderNum)
SELECT id, '1', (SELECT count(refId) + 1 FROM B WHERE userId = 1) as orderNum
FROM A
WHERE is_mendatory IS NOT NULL
ORDER BY is_mendatory ASC


假设我在表B中存在3条记录,并且使用SELECT查询,我将再插入5条记录。因此,应使用4,5,6,7,8中的orderNum插入那些新的5条记录。

但是目前,对于新的5条记录,它仅将4设置为orderNum

有人可以对此提出建议吗?

编辑:

我在orderNum字段中获得4条新的5条记录。

最佳答案

创建一个插入前触发器,为每个INSERT计数B中的行,将数字存储在变量中,并用行数更新表。

DELIMITER //

CREATE TRIGGER orderNum_after_insert
BEFORE INSERT
   ON B FOR EACH ROW
BEGIN

SET @orderNo:=(SELECT COUNT(*) FROM B);
SET NEW.orderNum=@orderNo;

END; //

DELIMITER ;

09-26 17:32