在订单系统中订单号不能重复,那么怎么才能高效的生成不会重复的订单号呢?
通过程序生成的订单号为了保证不重复要么就是很长,要么就是一堆没有什么实际意义的长字符串,而且为了保证不重复还得在数据库表字段做唯一约束很不友好,所以通过sql数据库存储过程生成唯一订单号,而且还能有一定规则的方法就很优雅。
第一步需要一个数据库表现导入进去:
CREATE TABLE `generate_serialno` (
`id` int(11) NOT NULL,
`ordervalue` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL,
`ordertime` datetime(0) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Dynamic;
第二部创建存储过程sql执行下:
CREATE DEFINER=`root`@`localhost` PROCEDURE `generate_orderNo`(
IN orderNamePre CHAR(4),
IN num INT,
OUT newOrderNo VARCHAR (25)
)
BEGIN
-- 订单变化的值
DECLARE orderNameValue INT ;
--