`

MySQL触发器使用详解

阅读更多

先来个实例,下面再做详解

delimiter $$
create trigger orderitem_ident_bi
before insert on orderitem
FOR EACH ROW
BEGIN
declare lastid int;
select last_insert_id() into lastid;
if lastid<1 then
select max(id) into lastid from orderitem;
end if;
set New.ident =concat(DATE_FORMAT(now(), '%Y%m%d%H%i%s'),LPAD(lastid+1,4,'0'));
END$$
create trigger commodity_ident_bi
before insert on commodity
FOR EACH ROW
BEGIN
declare maxCount int;
select count(id) into maxCount from commodity where shopid=New.shopid and catalogid=New.catalogid;
set New.ident =concat(LPAD(New.catalogid,2,'0'),LPAD(maxCount+1,3,'0'));
END$$
delimiter ;

 

1、创建触发器的语句:
CREATE TRIGGER <触发器名称> <--
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON <表名称>
FOR EACH ROW
<触发器SQL语句>
触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.
这里我有个习惯:就是用表的名字+'_'+触发器类型的缩写.因此如果是表t26,触发器是在事件UPDATE(参考下面的点(2)和(3))之前(BEFORE)的,那么它的名字就是t26_bu。
可以直接在EMS中创建触发器。

2、触发时间:
Before表示在事件发生之前执行MySQL触发器,After表示在事件发生之后执行触发器;

3、触发事件:
三个事件:insert, update, delete

4、触发器与表的关系:
触发器是属于一个表的,当在这个表上执行insert, update, delete操作时,就会导致相应的触发器被激活;
不能给同一个表的同一个操作创建两个不同的触发器。

5、触发间隔:
FOR EACH ROW 子句通知MySQL触发器每隔一行执行一次动作,而不是对整下表执行一次。

6、触发的SQL语句:
触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样。
复合语句(BEGIN / END)是合法的.
流控制(Flow-of-control)语句(IF, CASE, WHILE, LOOP, WHILE, REPEAT, LEAVE,ITERATE)也是合法的.
变量声明(DECLARE)以及指派(SET)是合法的.
允许条件声明.
异常处理声明也是允许的.
但是在这里要记住函数有受限条件:不能在函数中访问表.因此在函数中使用以下语句是非法的。

7、创建触发器的权限:
你必须要有相当大的权限才能够创建MySQL触发器;我在创建触发器的时候提示要有super privilege才可以创建;

分享到:
评论

相关推荐

    MYSQL触发器使用详解

    MYSQL触发器,可以使用它用来进行监控,例如商品价格变化,下单后商品库存减少等实用性操作!

    mysql中触发器使用详解.docx

    触发器是与表有关的数据库对象,在对表进行insert/update/delete之前或之后,会触发并执行触发器中定义的SQL语句。触发器的这种特性可以协助应用在数据库端确保数据的完整性,记录日志,校验数据等。

    mysql触发器详解!!!

    部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。 优点: 触发器可通过数据库中的相关表实现级联更改,不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制用比CHECK...

    mysql 触发器用法实例详解

    MySQL触发器语法详解:  触发器 trigger是一种特殊的存储过程,他在插入(inset)、删除(delete)或修改(update)特定表中的数据时触发执行,它比数据本身标准的功能更精细和更复杂的数据控制能力。触发器不是由...

    MySQL 触发器详解及简单实例

    MySQL 触发器简单实例 语法 CREATE TRIGGER &lt;触发器名称&gt; –触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象. { BEFORE | AFTER } –触发器有执行的时间设置:...

    MySQL触发器基本用法详解【创建、查看、删除等】

    本文实例讲述了MySQL触发器基本用法。分享给大家供大家参考,具体如下: 一、MySQL触发器创建: 1、MySQL触发器的创建语法: CREATE [DEFINER = { 'user' | CURRENT_USER }]  TRIGGER trigger_name trigger_...

    MySQL触发器概念、原理与用法详解

    主要介绍了MySQL触发器概念、原理与用法,结合实例形势详细分析了mysql触发器相关概念、原理、创建、用法及操作注意事项,需要的朋友可以参考下

    MySql视图触发器存储过程详解

    主要介绍了MySql视图触发器存储过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    MySQL通过触发器解决数据库中表的行数限制详解及实例

    主要介绍了MySQL通过触发器解决数据库中表的行数限制详解及实例的相关资料,需要的朋友可以参考下

    详解MySQL数据库之触发器

    MySQL触发器和存储过程一样,都是嵌入到MySQL的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELETE。如果定义了触发器,当数据库执行这些语句的时候就会激活触发器执行相应的操作,触发...

    MySql零基础入门到精通(资料集)SQL语句+触发器+存储过程+安装卸载+导入导出+性能优化

    学习路线已为你标好,初学者不必走弯路浪费时间,一步到位实践精通 ...第二阶段---MySQL触发器.pdf 第二阶段---如何导入导出MySQL数据库.doc 第二阶段---正确版MySgl绿色版配置及使用详解.doc ..............

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战...

Global site tag (gtag.js) - Google Analytics