我有以下两个表A
和B
。
我想将表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 ;