数据库触发器

在实际开发中,我们经常会遇到这样的情况:有 2 个或者多个相互关联的表,如 商品信息 库存信息
别存放在 2 个不同的数据表中,我们在添加一条新商品记录的时候,为了保证数据的完整性,必须同时
在库存表中添加一条库存记录。
这样一来,我们就必须把这两个关联的操作步骤写到程序里面,而且要用 事务 包裹起来,确保这两个操
作成为一个 原子操作 ,要么全部执行,要么全部不执行。
如果我现在不想使用事务怎么办????
MySQL 5.0.2 版本开始支持触发器。 MySQL 的触发器和存储过程一样,都是嵌入到 MySQL 服务器的一 段程序
触发器是由 事件来触发 某个操作,这些事件包括 INSERT UPDATE DELETE 事件。所谓事件就是指
用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生
了,就会 自动 激发触发器执行相应的操作。
当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来
实现
数据库触发器_第1张图片
说明:
表名 :表示触发器监控的对象。
BEFORE|AFTER :表示触发的时间。 BEFORE 表示在事件之前触发; AFTER 表示在事件之后触发。
INSERT|UPDATE|DELETE :表示触发的事件。
INSERT 表示插入记录时触发;
UPDATE 表示更新记录时触发;
DELETE 表示删除记录时触发。
创建数据库表
 
CREATE TABLE test_trigger (
id INT PRIMARY KEY AUTO_INCREMENT ,
t_note VARCHAR ( 30 )
);
CREATE TABLE test_trigger_log (
id INT PRIMARY KEY AUTO_INCREMENT ,
t_log VARCHAR ( 30 )
);

代码举例:
数据库触发器_第2张图片
创建触发器之后
test_trigger 数据表插入数据之前,向
test_trigger_log 数据表中插入 before_insert 的日志信息
数据库触发器_第3张图片
数据库触发器_第4张图片
数据库触发器_第5张图片
查看修改触发器
注意Navicat里不能用 \G    可以在黑屏里用
数据库触发器_第6张图片

你可能感兴趣的:(数据库)