最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

MySql触发器使用讲解_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 19:55:33
文档

MySql触发器使用讲解_MySQL

MySql触发器使用讲解_MySQL:触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。在本文中将讲解的内容包括: 触发器的含义和作用 如何创建触发
推荐度:
导读MySql触发器使用讲解_MySQL:触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。在本文中将讲解的内容包括: 触发器的含义和作用 如何创建触发
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。在本文中将讲解的内容包括:

触发器的含义和作用
如何创建触发器
如何查看触发器
如何删除触发器

触发器是由INSERT、UPDATE和DELETE等事件来触发某种特定操作。满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。这样做可以保证某些操作之间的一致性。例如,当学生表中增加了一个学生的信息时,学生的总数就必须同时改变。可以在这里创建一个触发器,每次增加一个学生的记录,就执行一次计算学生总数的操作。这样就可以保证每次增加学生的记录后,学生总数是与记录数是一致的。触发器触发的执行语句可能只有一个,也可能有多个。本节将详细讲解创建触发器的方法。

一、语法

创建只有一个执行语句的触发器

MySQL中,创建只有一个执行语句的触发器的基本形式如下:

CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW 执行语句
创建有多个执行语句的触发器

MySQL中,触发器触发的执行语句可能有多个。创建有多个执行语句的触发器的基本形式如下:

CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件
ON 表名 FOR EACH ROW
BEGIN
执行语句列表
END
下面来具体说说语法

1、命名规则

CREATE TRIGGER <触发器名称> <--
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON <表名称>
FOR EACH ROW
BEGIN
<触发器SQL语句>
END
触发器必须有名字,最多64个字符,可能后面会附有分隔符.它和MySQL中其他对象的命名方式基本相象.
2、触发时间: BEFORE | AFTER
触发器有执行的时间设置:INSERT | UPDATE | DELETE
3、触发事件前后
同样也能设定触发的事件:它们可以在执行insert、update或delete的过程中触发。
4.、表
触发器是属于某一个表的:当在这个表上执行插入、
更新或删除操作的时候就导致触发器的激活.
我们不能给同一张表的同一个事件安排两个触发器。
5.、( 步长)触发间隔
触发器的执行间隔:FOR EACH ROW子句通知触发器
每隔一行执行一次动作,而不是对整个表执行一次。
6、 语句
触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句,
包括复合语句,但是这里的语句受的限制和函数的一样。
Privileges权限
你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER)。如果你已经是Root用户,那么就足够了。这跟SQL的标准有所不同。

二、关于旧的和新创建的列的标识

在触发器的SQL语句中,你可以关联表中的任意列。但你不能仅使用列的名称去标识,那会使系统混淆,因为那里可能会有列的新名(这可能正是你要修改的,你的动作可能正是要修改列名),还有列的旧名存在。因此你必须用这样的语法来标识: "NEW . column_name"或者"OLD . column_name".这样在技术上处理(NEW | OLD . column_name)新和旧的列名属于创建了过渡变量("transition variables")。

对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及OLD同时使用。

三、使用范例

先创建两个表、一个订单表,一个订单时间表

CREATE TABLE T_ORDER(
ORDER_NUM INT PRIMARY KEY,
ORDER_NAME CHAR(10) NOT NULL
);
CREATE TABLE T_ORDER_TIME(
ORDER_NUM INT PRIMARY KEY,
ORDER_TIME TIMESTAMP NOT NULL,
)

1、创建插入时的触发器

CREATE TRIGGER TRI_INSERT
AFTER INSERT ON T_ORDER FOR EACH ROW
BEGIN
INSERT INTO learning.t_order_time(ORDER_NUM,ORDER_TIME) VALUES(NEW.ORDER_NUM,NOW());
END
然后订单表中插入一条数据
INSERT INTO T_ORDER(ORDER_NUM,ORDER_NAME) VALUES(1,'电脑');
SELECT * FROM t_order;
SELECT * FROM t_order_time;
这是订单表中插入的数据:

\

这是订单时间表中自动插入的数据:

\

2、更新时插入数据

//更新创建触发器
CREATE TRIGGER TRI_UPDATA
BEFORE UPDATE ON T_ORDER FOR EACH ROW
BEGIN
UPDATE learning.t_order_time SET ORDER_TIME=NOW() WHERE OLD.ORDER_NUM=ORDER_NUM;
END

UPDATE T_ORDER SET ORDER_NAME='饼干饼' WHERE ORDER_NUM=1;
SELECT * FROM t_order;
SELECT * FROM t_order_time;
\


可以看到,时间已经更新

3、创建删除触发器

//创建删除触发器
CREATE TRIGGER TRI_DELETE
AFTER DELETE ON T_ORDER FOR EACH ROW
BEGIN
DELETE FROM learning.t_order_time WHERE OLD.ORDER_NUM=ORDER_NUM;
END

DELETE FROM learning.t_order WHERE ORDER_NUM=1;
SELECT * FROM t_order;
SELECT * FROM t_order_time;
可以看到,数据库中都没有数据了。
\


4、查看触发器

查看触发器是指查看数据库中已存在的触发器的定义、状态和语法等信息。查看触发器的方法包括SHOW TRIGGERS语句和查询information_schema数据库下的triggers表等。本节将详细讲解查看触发器的方法。

MySQL中,可以执行SHOW TRIGGERS语句来查看触发器的基本信息。其基本形式如下:

SHOW TRIGGERS ;

\

MySQL中,所有触发器的定义都存在information_schema数据库下的triggers表中。查询triggers表,可以查看到数据库中所有触发器的详细信息。查询的语句如下:

SELECT * FROM information_schema.triggers;

\

5、删除触发器
DROP TRIGGER 触发器名

6、触发器 与存储过程
触发程序不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL
(允许存储程序通过参数将数据返回触发程序)。
而存储过程 可以接受参数,将结果范围给应用程序

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

MySql触发器使用讲解_MySQL

MySql触发器使用讲解_MySQL:触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。MySQL从5.0.2版本开始支持触发器。在本文中将讲解的内容包括: 触发器的含义和作用 如何创建触发
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top