代账行业门户网站开发,建筑设计公司官网,视频链接怎么制作,怎样做企业手机网站建设目录
一、触发器概述
二、触发器操作
1、创建触发器
2、查看触发器
3、删除触发器
三、触发器应用 一、触发器概述
MySQL的触发器和存储过程一样#xff0c;都是嵌入到MySQL的一段程序。触发器是由时间来触发某个操作#xff0c;这些时间包括INSERT、UPDATE和DELETE语…目录
一、触发器概述
二、触发器操作
1、创建触发器
2、查看触发器
3、删除触发器
三、触发器应用 一、触发器概述
MySQL的触发器和存储过程一样都是嵌入到MySQL的一段程序。触发器是由时间来触发某个操作这些时间包括INSERT、UPDATE和DELETE语句。如果定义了触发程序当数据执行这些语句的时候就会激发触发器执行相应的操作触发程序是与表有关的命名数据库对象当表上出现特定事件时将激活该对象。
触发器trigger是一个特殊的存储过程不同的是执行存储过程要使用CALL语句来调用而触发器的执行不需要使用CALL语句调用也不需要手工启动只要当一个预定义ide事件发生的时候就会被MySQL自动调用。
触发器也可以查询其他表而且可以包含复杂的SQL语句它们主要用于满足复杂的业务规则或要求。
触发程序优点
1触发程序的执行过程是自动的。当触发程序相关表的数据做出相应的修改后立即执行。
2触发程序可以通过数据库中相关的表进行层叠修改另表的表。
3触发程序可以实现实施比FOREIGN KEY约束CHECK约束更为复杂的检查和操作。
二、触发器操作
1、创建触发器
语法
create trigger 触发器名 触发时机before|after 触发事件insert|update|delete
on 表名 for each row
begin
触发器程序体
end
2、查看触发器
语法1
show triggers;
语法2
select * from INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME触发器名 \G
3、删除触发器
语法
drop trigger [数据库名.]触发器名
三、触发器应用
例如基于此素材
mysql create table student(- id int auto_increment primary key,- name varchar(20)- );
Query OK, 0 rows affected (0.03 sec)mysql insert into student(name) values (xiaoming),(xiaogang);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql select * from student;
--------------
| id | name |
--------------
| 1 | zhangsan |
--------------
1 row in set (0.00 sec)mysql select * from student_total;
-------
| total |
-------
| 1 |
-------
1 row in set (0.00 sec)
1、创建插入触发器在student表中插入数据然后studen_total表中自动加一。
mysql delimiter $$
mysql create trigger student_insert_trigger after insert- on student for each row- begin- update student_total set totaltotal1;- end$$
Query OK, 0 rows affected (0.00 sec)
mysql delimiter ;2、创建一个删除触发器在student表中删除数据然后student_total表的total自动减一。
mysql delimiter $$
mysql create trigger student_delete_trigger after delete- on student for each row- begin- update student_total set totaltotal-1;- end$$
Query OK, 0 rows affected (0.02 sec)mysql delimiter ;3、 创建一个更新触发器在t1表中修改name字段在t2表自动修改name。
mysql create table t1(- name varchar(20)- );
Query OK, 0 rows affected (0.00 sec)mysql create table t2(- name varchar(20)- );
Query OK, 0 rows affected (0.00 sec)mysql insert into t1 values (zhangsan),(lisi);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql insert into t2 values (zhangsan),(lisi);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql select * from t1;
----------
| name |
----------
| zhangsan |
| lisi |
----------
2 rows in set (0.00 sec)mysql select * from t2;
----------
| name |
----------
| zhangsan |
| lisi |
----------
2 rows in set (0.00 sec)触发器
mysql delimiter $$
mysql create trigger t1_after_uptate_trigger after update- on t1 for each row- begin - update t2 set namenew.name where nameold.name;- end $$
Query OK, 0 rows affected (0.00 sec)
mysql delimiter ;查看结果
mysql update t1 set namezhangsanfeng where namezhangsan;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql select * from t2;
--------------
| name |
--------------
| zhangsanfeng |
| lisi |
--------------
2 rows in set (0.00 sec)mysql select * from t1;
--------------
| name |
--------------
| zhangsanfeng |
| lisi |
--------------
2 rows in set (0.00 sec)更多应用需要看实际需求 。