首先感谢roy_88 版主的指教,这个代码,我就是稍微改动一下,让他更完善。
不知道为什么发帖没有成功。开个博客吧,记录一下自己的学习过程,也挺好。感谢回答我这老菜鸟问题的人们。
create table orders(orders_id varchar(12) primary key,customer_name varchar(100) );
create table NextSerialNr(DT date,NextNr int);
建立两张表,再后来的应用中,我把DT的类型改成了varchar(20),实际系统应用比较简单,就是加个字母,然后用年和流水号作为排序规定。
roy_88 版主回复:“在计数器表的列NextSerialNr.DT加上索引,提高查询性能”
代码在navicat下调试通过,截图已经改成我要的字母+年份+序号的模式了,mysql数据库版本是5.7,实际应用数据库是mysql5.5,都通过了。而版主给的代码是少了最后一句,
也就是更新计数这部分。数据无任何实际意义,就是为了测试。还是感谢roy_88版主的指点。
触发器代码:名称自己命名,
BEGIN
declare n int;
select NextNr into n from NextSerialNr where DT=DATE_FORMAT(CURDATE(),'%Y%m%d');
if n is null then
begin
insert into NextSerialNr values(CURDATE(),2);
set n=1;
end;
end if;
set NEW.orders_id=concat('HT',DATE_FORMAT(CURDATE(),'%Y%m%d'),right(10000+n,4));
UPDATE NextSerialNr SET NextNr=NextNr+1 where DT=DATE_FORMAT(CURDATE(),'%Y%m%d');
END