MySQL触发器的使用

原始需求:

编号字段:L+年月日+十位流水号,例如:L201502090000000001   
第二天的数据十位流水号又是从1开始

测试数据表以及触发器的建立如下:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for gztest
-- ----------------------------
DROP TABLE IF EXISTS `gztest`;
CREATE TABLE `gztest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `code` bigint(20) DEFAULT NULL,
  `content` char(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
DROP TRIGGER IF EXISTS `getcode`;
DELIMITER ;;
CREATE TRIGGER `getcode` BEFORE INSERT ON `gztest` FOR EACH ROW BEGIN
declare newcode BIGINT;
SET newcode=(SELECT `code` FROM gztest WHERE `code` LIKE CONCAT(DATE_FORMAT(curdate(),‘%Y%m%d‘),‘%‘) ORDER BY `code` DESC LIMIT 1);
IF newcode THEN
    SET NEW.code=newcode+1;
ELSE
  SET NEW.code=CONCAT(DATE_FORMAT(curdate(),‘%Y%m%d‘),‘0000000001‘);
END IF;
END
;;
DELIMITER ;
时间: 2025-01-03 13:47:36

MySQL触发器的使用的相关文章

mysql触发器学习

创建一个触发器 语法: create trigger 触发器名字 create trigger xiaoshou_update_trigger  after update on xiaoshou  for each row  begin  update jiangjin  set xiaoshouer=( select sum(taoshu*danjia)from xiaoshou  where userid=new.userid  and month=new.month) , jiangjin

mysql 触发器基础:

触发器,顾名思义,基于某具体的DML语句的触发或执行,来执行一个动作.mysql触发器在6个不同的集成点进行定义:before insert:插入之前执行触发器 after insert:插入之后执行触发器before update:插入之前执行触发器after update:插入之后执行触发器before delete:删除之前执行触发器 after delete:删除之后执行触发器 每个点只能定义一个触发器,触发器只可以应用在for each row上,没有每个语句级的功能.也没有代替触发器

mysql触发器的实战经验-不错的文章

1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程序比如fc-star管理端,sfrd(das),dorado都会用到触发器程序,实现对于数据库增.删.改引起事件的关联操作.本文介绍了触发器的类型和基本使用方法,讲述了触发器使用中容易产生的误区,从mysql源码中得到触发器执行顺序的结论,本文最后是实战遭遇的触发器经典案例.没有特殊说明时,本文的实

8Python全栈之路系列之MySQL触发器

Python全栈之路系列之MySQL触发器 l 对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为. 创建触发器基本语法 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN     ... END 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON t

MySQL触发器分析

触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有以下的作用: 1.安全性.可以基于数据库的值使用户具有操作数据库的某种权利. # 可以基于时间限制用户的操作,例如不允许下班后和节假日修改数据库数据. # 可以基于数据库中的数据限制用户的操作,例如不允许股票的价格的升幅一次超过10%. 2.审计.可以跟踪用户对数据库的操作. # 审计用户操作数据库的语句. # 把用户对数据库的更新写入审计表. 3.实

MySQL触发器的正确用法

一.创建触发器的基本语法: CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW 触发器语句 触发事件包括:INSERT.UPDATE.DELETE 二.正确案例演示 如果想在sql文件中直接创建触发器,下面为一个完整的sql文件创建(含触发器的创建)示例: use mysql drop database if exists myTest; create database myTest default charset=gb2312; u

mysql 触发器 Varnish:高速http缓存 varnish cdn 推送平台

sendfile(数据直接从 kernal的buffer出去)适合小文件Aio(nginx)全异步(与事件驱动io的区别是:数据会到达mem才会通知,其实也不需要通知 可以直接返回给客户端) 支持:mmap event drive(处理大文件) 上一回说到,在数据库修改后,redis里面的数据不能做到自动更新,必须手动删除更改过的数据 根据以上问题我们做出如下改进:所以接下来就要通过 mysql 触发器将改变的数据同步到 redis 中配置 gearman 实现数据同步Gearman 是一个支持

MySQL 触发器 语法实例

MySQL触发器语法: DELIMITER // create trigger [trigger_name] [before/after] [insert/delete/update] on [table_name] for each row begin --doing something like this insert into tab2(tab2_id) values (new.tab1_id); end;// DELIMITER; 测试通过

mysql触发器的作用及语法

触发器是一种特殊的存储过程,它在插入,删除或改动特定表中的数据时触发运行,它比数据库本身标准的功能有更精细和更复杂的数据控制能力. 数据库触发器有下面的作用: 1.安全性.能够基于数据库的值使用户具有操作数据库的某种权利. # 能够基于时间限制用户的操作,比如不同意下班后和节假日改动数据库数据. # 能够基于数据库中的数据限制用户的操作,比如不同意股票的价格的升幅一次超过10%. 2.审计.能够跟踪用户对数据库的操作. # 审计用户操作数据库的语句. # 把用户对数据库的更新写入审计表. 3.实

实现mysql和redis之间的触发数据同步——mysql 触发器+gearman+php.worker

上回一次我们已经实现了 redis 作为 mysql 的缓存服务器,但是如果更新了 mysql,redis 中仍然会有对应的 KEY,数据就不会更新,此时就会出现 mysql 和 redis 数据不一致的情 况. 详情请见        基于redis缓存数据库实现lnmp架构高速访问 所以接下来就要通过 mysql 触发器将改变的数据同步到 redis 中. 因为mysql和redis数据格式不同,不能实现直接同步,所以 将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP