我是靠谱客的博主 现实小刺猬,最近开发中收集的这篇文章主要介绍触发器的基础介绍一.为什么有触发器?二.什么是触发器?三.触发器的创建四. 查看触发器五.删除触发器六.触发器的优缺点,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 一.为什么有触发器?
- 二.什么是触发器?
- 三.触发器的创建
- 四. 查看触发器
- 五.删除触发器
- 六.触发器的优缺点
一.为什么有触发器?
1.1很多时候,我们数据库的表都要进行关联其他的表,为了确保数据的一致性。但是在增删改操作之后,我们如何确保数据的一致性呢?就比如学生的信息表和学生的课程表,我们要删除一个学生的信息,我们不能只删除学生信息而不删除该学生的课程信息吧。此时,你想到那我可以再把该学生的课程信息也删除啊。对,这是没错的。但是这两个操作必须在一个事务中,根据事物的原子性的特点,要么都执行成功,要么都执行失败。但是有时候,我们常常会忘记把关联的表的相应记录也进行更改,那个这个时候就需要有个程序可以帮我们自动更改。这就是我们说的触发器。
二.什么是触发器?
2.1 触发器就是当我们触发某个事件的时候,会自动触发触发器执行相应的操作。这里事件包括update|delete|insert数据操作。触发器是一种特殊的存储过程,都是一段sql程序,与存储过程不同的是,触发器在事件触发时,自动执行,存储过程则需要手动调用。
三.触发器的创建
3.1 触发器创建的语法结构:
create trigger 触发器名称
{after|before} {update|delete|insert} on 表名
for each row
触发器语句块;
3.2 例子:
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、创建触发器:创建名称为before_insert的触发器,向test_trigger数据表插入数据之前,向 test_trigger_log数据表中插入before_insert的日志信息。
DELIMITER //
CREATE TRIGGER before_insert
BEFORE INSERT ON test_trigger
FOR EACH ROW
BEGIN
INSERT INTO test_trigger_log (t_log)
VALUES('before_insert');
END //
DELIMITER ;
四. 查看触发器
#方式一
show triggers
#方式二
show create trigger 触发器名
#方式三
select * from information_schema.trigger;
五.删除触发器
drop trigger 触发器名
六.触发器的优缺点
6.1 优点
- 确保数据的一致性
- 帮助记录日志
- 在操作日志前,对数据进行合法校验
6.2缺点
- 可读性差,触发器不受应用层控制,系统维护困难
- 相关数据的变更,可能会导致触发器出错
最后
以上就是现实小刺猬为你收集整理的触发器的基础介绍一.为什么有触发器?二.什么是触发器?三.触发器的创建四. 查看触发器五.删除触发器六.触发器的优缺点的全部内容,希望文章能够帮你解决触发器的基础介绍一.为什么有触发器?二.什么是触发器?三.触发器的创建四. 查看触发器五.删除触发器六.触发器的优缺点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复