数据库中的触发器

本文围绕数据库触发器展开,介绍了其概念,指出它是修改表数据时执行的存储过程,可确保数据完整性。阐述了使用触发器的优点及功能,介绍了DDL和DML两种触发器类型,还详细说明了创建、查看和删除触发器的步骤。

触发器

  1. 概念:触发器是一个在修改指定表中的数据时执行的存储过程。经常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以此确保数据的完整性。触发器定义在某个创建的表上也可以定义在一个数据库上。
  2. 触发器和存储过程的区别:
    (1)触发器主要时通过事件进行触发而被执行的
    (2) 存储过程可以通过存储过程名字而被直接调用

为什么要使用触发器

  1. 优点:
    (1)触发器自动执行,它们在表的数据作了任何修改之后立即激活
    (2)触发器可以通过数据库中的相关表进行层叠更改。这比直接把代码卸载前台的做法更安全合理
    (3)触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂。与CHECK的约束不同的是,触发器可以引用其他表中的列。
  2. 功能:维护数据的安全性

触发器的种类

  1. DDL触发器:数据定义语言 (DDL)触发器,针对数据库 ,在创建一个表或者修改,删除时会触发DDL这样一个触发器,这个触发器可以防止对数据库架构进行某些更改,希望数据库中发生某种情况以响应数据库架构中的更改,要记录数据架构中的更改或者事件。 DDL 触发器激发存储过程以响应各种 DDL 语句,这些语句主要以CREATE、ALTER 和 DROP 开头。 DDL 触发器可用于管理任务,例如审核和控制数据库操作。
  2. DML触发器:数据操作语言,当INSERT、UPDATE 或 DELETE 语句修改指定表或视图中的数据时,可以使用 DML 触发器。它包含三种触发器分别是:
    (1)INSERT触发器
    (2)UPDATE触发器
    (3)DELETE触发器
  3. 通常说的触发器就是DML触发器。

创建触发器的步骤

创建触发器首先需要create trigger权限
在创建语句上大致可以分为4步:
1、定义触发器
2、触发条件(区分触发器的类型)
3、声明部分
4、主体部分

创建触发器

	CREATE TRIGGER trigger_name
	trigger_time
	trigger_event ON tbl_name
	FOR EACH ROW
	trigger_stmt
  • trigger_name:标识触发器名称,用户自行指定; trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;
  • trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;
  • tbl_name:标识建立触发器的表名,即在哪张表上建立触发器;
  • trigger_stmt:触发器程序体,可以是一句SQL语句,或者用BEGIN 和 END 包含的多条语句。
  • 由此可见,可以建立6种触发器,即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER DELETE。
  • 另外有一个限制是不能同时在一个表上建立2个相同类型的触发器,因此在一个表上最多建立6个触发器。

查看触发器

	SELECT * FROM information_schema.`TRIGGERS`;
	//或者
	SHOW TRIGGERS [FROM schema_name];
  • 其中,schema_name 即 Schema 的名称,在 MySQL 中 Schema 和 Database 是一样的,也就是说,可以指定数据库名,这样就不必先“USE database_name;”了。

删除触发器

	drop trigger lease_trigger;
数据库中的触发器(Trigger)是一种特殊的存储过程,它可以在某个表中的数据发生变化时自动执行一些操作。触发器通常用于实现数据的自动化处理和数据一致性的维护。 在大多数关系型数据库中,触发器通常支持以下几种事件: - INSERT:在某个表中插入数据时触发。 - UPDATE:在某个表中更新数据时触发。 - DELETE:在某个表中删除数据时触发。 触发器通常由以下几个部分组成: - 事件类型:指定触发器要响应的事件类型,比如 INSERT、UPDATE 或 DELETE。 - 触发时机:指定触发器何时执行,通常有 BEFORE(在数据修改之前执行)和 AFTER(在数据修改之后执行)两种。 - 触发条件:指定当满足一定条件时触发器才会执行。 - 触发操作:指定触发器要执行的操作,比如执行一条 SQL 语句、调用一个存储过程等等。 以下是一个 MySQL 数据库中的触发器的示例: ```sql CREATE TRIGGER my_trigger AFTER INSERT ON my_table FOR EACH ROW BEGIN INSERT INTO log_table (log_message) VALUES ('New row inserted'); END; ``` 这个触发器在 `my_table` 表中插入新数据后,会自动将一条日志插入到 `log_table` 表中。在触发器中,我们指定了触发时机为 AFTER,事件类型为 INSERT,触发条件为 FOR EACH ROW(即每插入一行数据都会执行一次触发器),并且定义了一个 INSERT 操作,将日志插入到 `log_table` 表中。 触发器是一个强大而又灵活的数据库特性,可以在很多场景中发挥作用,比如实现数据的自动备份、数据的自动统计和更新、数据的自动审核和校验等等。但是,过度使用触发器可能会影响数据库的性能,因此在使用触发器时需要谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值