语法:
delimiter 自定义结束符号
create trigger 触发器名字 触发时间 触发事件 on 表 for each row
begin
-- 触发器内容主体,每行用分号结尾
end
自定义的结束符合
delimiter ;
实现一个表biz_leave中ticket_number,每天从YYYYMMDD01开始递增:
delimiter ##
DROP TRIGGER IF EXISTS generate_ticket_number ##
create trigger generate_ticket_number before insert on biz_leave
for each ROW
BEGIN
declare dt char(8);
declare bh_id char(10);
declare seq int;
declare new_bh varchar(10);
set dt= DATE_FORMAT(CURDATE(),'%Y%m%d');
/*获取当天最大序列号*/
SELECT
max(ticket_number) into bh_id from biz_leave
where ticket_number like CONCAT(dt,'%');
/*若当天还未有记录,将序列号初始化为YYYYMMDD + 01*/
if bh_id ='' or bh_id is null THEN
set new_bh = concat(dt, '01');
/*将当天最大序列号加1,作为当前插入行的序列号*/
ELSE
set seq = right(bh_id,2) + 1;
/*确保序列号不超过两位*/
set new_bh = right(concat('00',seq),2);
set new_bh = concat(dt, new_bh);
end if;
update biz_leave set ticket_number = new_bh;
end##
delimiter;