delimiter $$
useppd-sit
$$
drop procedure if existscreateorderno
$$
create definer=root
@%
procedurecreateorderno
(outneworderno
char(15))
begin
declare currentdate char (8) ;-- 定義currentdate為當前日期,格式為:年+月+日
declare maxno int default 0 ; – 定義maxno為離現在最近的滿足條件的訂單編號的流水號最後5位,如:2018042600002的maxno=2
declare oldorderno char (15) default 『』 ;-- 定義oldorderno為離現在最近的訂單編號,預設為空
declare neworderno char (15) default 『』 ;-- 定義neworderno為新生成的訂單編號,預設為空
select date_format(now(), 『%y%m%d』) into currentdate ;-- 當前日期 訂單編號形式:年月日+流水號,如:2018042600002
/* 從test_orders表中查出最新一條記錄賦值給oldorderno */
select ifnull(order_no, 『』) into oldorderno – ifnull(expr1,expr2),接收兩個引數,如果不是null,則返回第乙個,如果是null,返回第二個
from course_order
where to_days(create_time) = to_days(now())
order by id desc limit 1 ; – 有多條時只顯示離現在最近的一條
if oldorderno != 『』 then
set maxno = convert(substring(oldorderno, -5), decimal) ;-- substring(oldorderno, -5):訂單編號如果不為『『擷取訂單的最後5位
end if ;
select
concat(『od』,currentdate, lpad((maxno + 1), 5, 『0』)) into neworderno ; – lpad((maxno + 1), 5, 『0』):如果不足5位,將用0填充左邊
select neworderno;
end$$
delimiter ;
mysql 觸發器流水號 建立生成流水號的觸發器
create table test id varchar 18 流水號,日期 8位 時間 4位 流水號 4位 name varchar 10 其他字段 go 建立生成流水號的觸發器 create trigger t insert on test instead of insert asdeclare...
SQL生成流水號
經過了幾次的測試終於成功了 declare year int,month int,day int,temp no varchar 12 needno varchar 4 no varchar 20 number varchar 50 randno varchar 50 nu varchar 10 s...
php生成流水號
function createn i else if i 100 else if i 1000 else echo substr 2012050010 0,6 echo createn 2 2 echo createn 9 9 echo createn 10 10 echo createn 11 1...