mysql的触发器生成自增长主键

mysql的触发器生成自增长主键_第1张图片
DELIMITER $
CREATE DEFINER=TestRoot@% PROCEDURE generate_orderNo(IN orderNamePre CHAR(4),OUT newOrderNo VARCHAR(13))
BEGIN
DECLARE maxNo INT DEFAULT 0 ; – 定义该站点中当前订单号最大的号 后六位
DECLARE oldOrderNo VARCHAR (13) DEFAULT ‘’ ; – 定义该站点中的最近的一个物流单号

SELECT IFNULL(order_no, ‘’) INTO oldOrderNo – 取去当前站点的最近的订单号
FROM orders
WHERE SUBSTRING(order_no, 1, 4) = orderNamePre
ORDER BY id DESC LIMIT 1 ;

IF oldOrderNo != ‘’ THEN
SET maxNo = CONVERT(SUBSTRING(oldOrderNo,5), DECIMAL) ; – 如果当前站点有订单号 则该站点最大号为最近的物流单号的后六位 强转为数字
END IF ;

SELECT CONCAT(orderNamePre, LPAD((maxNo + 1), 9, ‘0’)) INTO newOrderNo ; – 将站点名902 与生成的物流单号拼接一起 并返回物流单号 其中LPAD是左拼接方法 将0拼在物流单号的左边 拼成6位数
IF oldOrderNo = ‘’ THEN
INSERT INTO orders (order_no, station) VALUES (newOrderNo, orderNamePre) ; – 如果当前站点不存在 则插入一条站点记录
END IF ;
UPDATE orders SET order_no = newOrderNo WHERE SUBSTRING(order_no, 1, 4) = orderNamePre; – 更新当前站点名下的物流单号
DELIMITER $
SELECT
newOrderNo ;
END

你可能感兴趣的:(mysql的触发器生成自增长主键)