SQL来生成特殊的序列号
sql来生成特殊的序列号:
利用自增生成序列号,需要注意空洞的情况(事务回滚)
@MySQL---用SQL生成特殊的序列号
CREATE TABLE order_seq( timestr INT UNSIGNED, order_sn INT UNSIGNED, );DELIMITER //CREATE PROCEDURE seq_no()BEGINDECLARE v_cnt INT UNSIGNED;DECLARE v_timestr INT UNSIGNED;DECLARE rowcount BIGINT;SET v_timestr = DATE_FORMAT(NOW(),'%Y%m%d');SELECT ROUND(RAND()*100,0)+1 INTO v_cnt;START TRANSACTION;UPDATE order_seq SET order_sn = order_sn + v_cnt WHERE timestr = v_timestr;IF ROW_COUNT() = 0 THENINSERT INTO order_seq(timestr,order_sn) VALUES(v_timestr,v_cnt);END IF;SELECT CONCAT(v_timestr,LPAD(order_sn,7,0))AS order_snFROM order_seq WHERE timestr = v_timestr;COMMIT;END//DELIMITER ;CALL seq_no();