我有两个表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条记录设置为orderNum
。
有人可以对此提出一些建议吗?
编辑:
我在orderNum
字段中获得4个新记录。
答案 0 :(得分:0)
创建一个before insert触发器,为每个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 ;