触发器算是蛮好用的一个功能了,所谓触发器就是在某种条件下会触发执行的一个小程序。比如我们做一个大型的数据处理,这种例子很多,有一个表有很多记录,我们要经常拿到这个表的一些统计信息,比如这个表有多少条数据。从实现上来讲思路很多。我们可以使用 select count(id) from 表名,这是个不错的选择,但数据量太大,速度怎么样就不能保证了。
另一个办法,我们不妨记录下这个表的现在大小,在这个表每次插入一条语句时候就对这个计数进行加一操作,然后但我们要统计信息时候就直接取这个数据比select count(id) from 表名的速度要快多了。
当然,这么做也有风险就是我们要过一段时间确定这个计数的正确性。触发器出错的概率不大,但这个计数不被改,或者出问题则没人敢打包票,所以我们可以选择定时去核实他,比如说1天。
接下来我们就用触发器实现一个功能,对pet表的数据进行计数。
mysql> select * from pet;
+----------+--------+---------+------+------------+------------+
| name | owener | species | sex | birth | death |
+----------+--------+---------+------+------------+------------+
| Fluffy | Harold | cat | m | 1993-02-04 | 2008-12-01 |
| Claws | Gwen | cat | m | 1992-01-04 | 2008-12-01 |
| Buffy | Harold | cat | m | 1996-01-20 | 2008-12-01 |
| Didi | Gwen | cat | m | 1997-01-04 | 2008-12-01 |
| Fatpower | Shiwa | cat | m | 1997-01-04 | 2008-12-01 |
| Cliak | Yuna | dog | f | 2000-11-09 | NULL |
+----------+--------+---------+------+------------+------------+
6 rows in set (0.00 sec)
我们用account_pet表记录这个表的记录的条数
mysql> select * from account_pet;
+-------+
| count |
+-------+
| 6 |
+-------+
1 row in set (0.00 sec)
接下来我们开始书写计数触发器,所谓计数无非就是当我们对pet表进行插入操作数是,将count+1
mysql> delimiter |
mysql> create trigger account_pet_trigger after insert on pet
-> for each row begin
-> update account_pet set count = count + 1;
-> end;
-> |
Query OK, 0 rows affected (0.05 sec)
mysql> delimiter ;
接下来你就会发现每当你插入一个新的数据到pet,account_pet_trigger触发器就被触发执行,他就会执行他的执行体update account_pet set count = count + 1;将我们的统计加一。
触发器格式:
create trigger 触发器名称 trigger_time trigger_event on table_name for each row 执行体
trigger_time: before after
trigger_event: insert update delete很容易理解吧
为了完成统计功能,我们还要对pet表格写一个删除时候减一的触发器。
分享到:
相关推荐
在【标题】"专用触发器 使用教程 PDF"和【描述】"专用触发器 使用教程 系统详尽的讲解 PDF"中,我们可以理解这是一份详细的教程,专注于讲解如何在SQL Server中有效利用专用触发器。触发器的使用通常是为了满足用户...
### SQL触发器使用实例解析 #### 一、触发器概述 在数据库管理中,触发器是一种特殊类型的存储过程,它可以在特定的事件(如插入、更新或删除操作)发生时自动执行。触发器的主要作用是确保数据完整性,通过在特定...
触发器使用教程和命名规范 Oracle 触发器是一种数据库对象,它与某张表相关联,当有 DML 语句对表进行操作时,可以引起触发器的执行,达到对插入记录的一致性、正确性和规范性控制的目的。 触发器的实现比较灵活,...
### SQL Server 触发器使用详解 #### 一、触发器概述 触发器是一种特殊的存储过程,当数据在表或视图中发生特定类型的更改时(如插入、更新或删除),触发器会自动运行。触发器可以确保数据的完整性和一致性,并且...
触发器使用教程和命名规范 1 1,触发器简介 1 2,触发器示例 2 3,触发器语法和功能 3 4,例一:行级触发器之一 4 5,例二:行级触发器之二 4 6,例三:INSTEAD OF触发器 6 7,例四:语句级触发器之一 8 8,...
在这里,`trigger_name`是触发器的名称,通常建议使用`table_time_event`的方式命名,如`student_after_insert`。`table_name`是你想要关联的表名,`time`可以是`BEFORE`或`AFTER`,表示触发器是在操作前还是后执行...
通过理解和熟练运用这些知识点,你可以有效地使用MySQL触发器来增强数据库的功能,确保数据的准确性和业务流程的顺利进行。不过,要注意触发器的使用可能会增加数据库的复杂度,因此需要谨慎设计和管理。
删除触发器使用`DROP TRIGGER`语句,例如:`DROP TRIGGER name ON table;`。在某些情况下,可能需要暂时禁用触发器,可以使用`ALTER TABLE table DISABLE TRIGGER trigger_name;`。 **4. 实例应用** 假设我们有一个...
结合"触发器的使用案例.txt"和"T-SQL触发器的使用",我们可以看到如何将触发器与T-SQL字符串操作结合,例如在触发器中使用SUBSTRING和CHARINDEX来分析和验证新插入或更新的数据。 总的来说,理解和熟练运用触发器...
JK03-D三相过零触发器使用说明.pdf
MYSQL触发器,可以使用它用来进行监控,例如商品价格变化,下单后商品库存减少等实用性操作!
通过使用触发器,数据库管理员和开发人员可以实现复杂的业务逻辑和数据完整性规则,而这些规则无法通过简单的约束或存储过程单独完成。 在SQL Server中,触发器主要有以下三种类型: 1. **INSERT触发器**:当向表...
总之,Oracle触发器是一种强大的工具,可以帮助开发人员在数据库层面上实现复杂的业务逻辑和数据管理,但需要注意的是,过度使用触发器可能会导致性能问题,因此在设计数据库架构时应谨慎考虑其使用。
创建索引时需要考虑数据的访问模式和磁盘空间的使用情况,因为虽然索引可以加速查询,但也会占用额外的存储空间,并可能影响写入性能。 ### 存储过程 存储过程是一组预编译的SQL语句,存储在数据库中,可以在需要...
使用触发器需要注意,虽然它们提供了强大的功能,但也可能带来性能问题,因为它们增加了数据库处理的复杂性。在设计数据库系统时,应谨慎使用触发器,并充分考虑其对性能的影响。 总的来说,SQL Server触发器是...
在深入探讨MySQL触发器的使用之前,我们先来理解一下什么是触发器以及它在数据库管理中的作用。触发器是数据库中一种特殊的存储过程,当特定的事件(如INSERT、UPDATE或DELETE操作)在指定的表上发生时自动执行。...
宇电AIJK系列三相移相周波过零可控硅...宇电AIJK系列三相移相周波过零可控硅调功触发器的使用说明书包含了详细的安装、接线、操作和故障处理指南,用户应仔细阅读并按照说明进行操作,以确保设备的正常运行和高效使用。
KCjD触发器,通常指的是D型触发器,它是一种基本的数字逻辑电路,用于存储数据或时序逻辑系统中的状态。在这个PPT学习教案中,我们深入探讨了D触发器的工作原理、特性以及其在物联网(The INTERNET of THINGS)等...
该触发器使用 cursor 语句来遍历学生 transaction 表,计算每个学生的平均成绩,并更新学生表中的平均成绩列。 t2_statement 触发器的作用是当对选课表 SC 做insert、delete、update 修改时,自动将学生表中平均...
这个触发器使用了`inserted`表,它是SQL Server为存储插入或更新操作的新记录而创建的一个逻辑表。 第二个触发器`CP_UPDATE`在CP表的`cpbh`字段更新时,同步更新XSCP表中的对应记录。这里使用了`inserted`和`...