什么是触发器?
触发器就是监视某种情况,并触发某种操作
创建触发器的语法:
补充: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 触发器名称;