mysql 的触发器介绍

什么是触发器?

触发器就是监视某种情况,并触发某种操作

创建触发器的语法:

补充:delimiter // 自定义语句的结束符号(临时的)
因为格式需要换行所以将结束符号换为你想要的符号这里改为了//不再是之前的enter

create trigger 触发器名称  after/before   insert/update/delete on 表名  
        for each row
        begin
        sql语句;
        end

after/before:可以设置为事件发生前或后
insert/update/delete:它们可以在执行insert、update或delete的过程中触发
for each row:每隔一行执行一次动作

创建例子:

(可以看到猪八戒工资降低了100)

mysql> create trigger thecut after insert on cut
    -> for each row
    -> begin
    -> update employee set sal=sal-100 where empno=new.empno;
    -> end
    -> //
Query OK, 0 rows affected (0.01 sec)

mysql> select * from employee;
    -> //
+-------+--------+--------+------+------------+----------+--------+
| empno | ename  | job    | mgr  | hiredate   | sal      | deptnu |
+-------+--------+--------+------+------------+----------+--------+
|  1004 | 猪八戒 | 经理   | 1009 | 2001-04-02 | 29750.00 |     20 |
|  1006 | 猴子   | 经理   | 1009 | 2011-05-01 | 28500.00 |     30 |
|  1007 | 张飞   | 经理   | 1009 | 2011-09-01 | 24500.00 |     10 |
|  1008 | 诸葛亮 | 分析师 | 1004 | 2017-04-19 | 30000.00 |     20 |
|  1013 | 林俊杰 | 分析师 | 1004 | 2011-12-03 | 30000.00 |     20 |
|  1002 | 牛魔王 | 销售员 | 1006 | 2018-02-20 | 16000.00 |     30 |
|  1003 | 程咬金 | 销售员 | 1006 | 2017-02-22 | 12500.00 |     30 |
|  1005 | 后裔   | 销售员 | 1006 | 2011-09-28 | 12500.00 |     30 |
|  1010 | 韩信   | 销售员 | 1006 | 2018-09-08 | 15000.00 |     30 |
|  1012 | 安琪拉 | 文员   | 1006 | 2011-12-03 | 9500.00  |     30 |
|  1014 | 甄姬   | 文员   | 1007 | 2019-01-23 | 7500.00  |     10 |
|  1011 | 妲己   | 文员   | 1008 | 2018-05-23 | 11000.00 |     20 |
|  1001 | 小乔   | 文员   | 1013 | 2018-12-17 | 8000.00  |     20 |
|  1009 | 唐僧   | 董事长 | NULL | 2010-11-17 | 50000.00 |     10 |
+-------+--------+--------+------+------------+----------+--------+
14 rows in set (0.02 sec)

mysql> insert into cut values('1004','猪八戒','1');//
Query OK, 1 row affected (0.01 sec)

mysql> select * from cut;//
+-------+--------+------+
| empno | ename  | csal |
+-------+--------+------+
|  1004 | 猪八戒 |    1 |
+-------+--------+------+
1 row in set (0.04 sec)

mysql> select * from employee;//
+-------+--------+--------+------+------------+----------+--------+
| empno | ename  | job    | mgr  | hiredate   | sal      | deptnu |
+-------+--------+--------+------+------------+----------+--------+
|  1004 | 猪八戒 | 经理   | 1009 | 2001-04-02 | 29650.00 |     20 |
|  1006 | 猴子   | 经理   | 1009 | 2011-05-01 | 28500.00 |     30 |
|  1007 | 张飞   | 经理   | 1009 | 2011-09-01 | 24500.00 |     10 |
|  1008 | 诸葛亮 | 分析师 | 1004 | 2017-04-19 | 30000.00 |     20 |
|  1013 | 林俊杰 | 分析师 | 1004 | 2011-12-03 | 30000.00 |     20 |
|  1002 | 牛魔王 | 销售员 | 1006 | 2018-02-20 | 16000.00 |     30 |
|  1003 | 程咬金 | 销售员 | 1006 | 2017-02-22 | 12500.00 |     30 |
|  1005 | 后裔   | 销售员 | 1006 | 2011-09-28 | 12500.00 |     30 |
|  1010 | 韩信   | 销售员 | 1006 | 2018-09-08 | 15000.00 |     30 |
|  1012 | 安琪拉 | 文员   | 1006 | 2011-12-03 | 9500.00  |     30 |
|  1014 | 甄姬   | 文员   | 1007 | 2019-01-23 | 7500.00  |     10 |
|  1011 | 妲己   | 文员   | 1008 | 2018-05-23 | 11000.00 |     20 |
|  1001 | 小乔   | 文员   | 1013 | 2018-12-17 | 8000.00  |     20 |
|  1009 | 唐僧   | 董事长 | NULL | 2010-11-17 | 50000.00 |     10 |
+-------+--------+--------+------+------------+----------+--------+
14 rows in set (0.04 sec)

删除触发器的语法:

drop trigger 触发器名称;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值