MySQL触发器简单用法示例

作者:笑笑别人 时间:2024-01-26 11:26:53 

本文实例讲述了MySQL触发器简单用法。分享给大家供大家参考,具体如下:

mysql触发器和存储过程一样,是嵌入到mysql的一段程序,触发器是由事件来触发的,这些事件包括,INSERT,UPDATE,DELETE,不包括SELECT

创建触发器


CREATE TRIGGER name,time,event ON table_name FOR EACH ROW trigger_stmt

例如

CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount

有多个执行语句的触发器


CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
 a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 b4 INT DEFAULT 0
);
DELIMITER //
CREATE TRIGGER testref BEFORE INSERT ON test1
 FOR EACHROW BEGIN
   INSERT INTO test2 SET a2 = NEW.a1;
 DELETE FROM test3 where a3 = NEW.a1;
   UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
 END
 //
DELIMITER ;
INSERT INTO test3(a3) VALUES (NULL), (NULL), (NULL), (NULL), (NULL), (NULL),(NULL), (NULL), (NULL), (NULL), (NULL), (NULL);
INSERT INTO test4(a4) VALUES (0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
//开始测试
INSERT INTO test1 VALUES (1), (3), (1), (7), (1), (8), (4), (4);

查看触发器


SHOW TRIGGERS \G; //查看所有
SELECT * FROM information_schema.TRIGGERS where TRIGGER_NAME = 'testref';

删除触发器


DROP TRIGGER testref;

综合案例

步骤1:创建persons表


CREATE TABLE persons (name VARCHAR(40), num int);

步骤2:创建一个销售额表sales


CREATE TABLE sales (name VARCHAR(40), sum int);

步骤3:创建一个触发器


CREATE TRIGGER num_sum AFTER INSERT ON persons
FOR EACH ROW INSERT INTO sales VALUES (NEW.name,7*NEW.num);

步骤4:向persons表中插入记录


INSERT INTO persons VALUES ('xiaoxiao',20),('xiaohua',69);
SELECT * FROM persons;
SELECT *FROM sales;

希望本文所述对大家MySQL数据库计有所帮助。

来源:http://www.cnblogs.com/mr-amazing/p/4679743.html

标签:MySQL,触发器
0
投稿

猜你喜欢

  • python使用自定义user-agent抓取网页的方法

    2021-12-27 03:09:56
  • mysql8.0.19基础数据类型详解

    2024-01-25 22:38:57
  • Python flask框架实现浏览器点击自定义跳转页面

    2023-04-26 15:48:31
  • php面向对象全攻略 (十二) 抽象方法和抽象类

    2023-11-18 20:44:18
  • 用Python 爬取猫眼电影数据分析《无名之辈》

    2023-07-03 17:23:26
  • SQL语句如何实现超简单的多表查询

    2024-01-21 15:42:05
  • 详解Python的字符串格式化

    2022-05-01 10:35:52
  • Go for-range 的 value值地址每次都一样的原因解析

    2023-09-23 12:59:20
  • python中的Reportlab模块详解最新推荐

    2023-04-09 21:33:46
  • 百分百弹窗

    2013-08-07 07:41:06
  • Python使用Django实现博客系统完整版

    2021-02-10 14:43:48
  • python项目对接钉钉SDK的实现

    2021-09-18 22:21:29
  • yui3的AOP(面向切面编程)和OOP(面向对象编程)

    2009-09-24 14:47:00
  • 详解Django中异步任务之django-celery

    2022-09-25 18:57:22
  • Django项目实战之配置文件详解

    2023-08-13 19:28:07
  • Python抓取京东图书评论数据

    2023-10-16 09:26:37
  • 灵活运用Python 枚举类来实现设计状态码信息

    2023-04-29 15:03:34
  • 新装MySql后登录出现root帐号提示mysql ERROR 1045 (28000): Access denied for use的解决办法

    2024-01-21 13:48:06
  • python3排序的实例方法

    2023-01-17 11:05:28
  • php Exception异常处理详解

    2023-05-29 21:51:37
  • asp之家 网络编程 m.aspxhome.com