您的位置:首页 > 其它

触发器的创建

2016-02-28 11:39 239 查看
我们小组做的项目和订单有关,当用户下过订单后我们想为这个订单产生一个具有实际意义的订单号,比如cdn2009091100001代表2009-09-11日的第一笔订单。

所以我就为订单表写了一个产生订单号的触发器。

drop trigger t_createordercode_cdn_order_bi;
delimiter //
create trigger t_createordercode_cdn_order_bi BEFORE INSERT ON cdn_order
FOR EACH ROW
BEGIN
set @ordernum = 0;
select count(*) into @ordernum from cdn_order where DATE(ordertime) = current_date;
set @ordernumtemp = CONCAT("0000", @ordernum);
set @ordernumtemp = RIGHT(@ordernumtemp, 5);
set @ordercode = CONCAT("cdn", REPLACE(DATE(current_date),'-',''), @ordernumtemp);
set new.ordercode = @ordercode;
END
delimiter ;


t_createordercode_cdn_order_bi 触发器名字:t表示触发器,createordercode表示这个触发器的作用,cdn_order表示表名,bi表示before insert

on cdn_order:对与cdn_order表
for each_row:对每一列都发生作用

begin和end之间:定义一个变量ordernum,把cdn_order表中当天的订单数赋值给ordernum;然后把ordernum格式化为五位的字符串;链接'cdn',当前时间'20090911',ordernumtemp;把生产的字符串赋值给new.ordercode,也就是新插入的列

注意:开始一个同事说在插入一列后再产生订单号,所以我一直朝这个方向努力,但是一直报错,后来查下才知道插入后不能做修改动作。所以就该到插入前产生订单号。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: