찾다
데이터 베이스MySQL 튜토리얼MySql触发器使用讲解_MySQL

触发器(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,&#39;电脑&#39;);
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=&#39;饼干饼&#39; 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
(允许存储程序通过参数将数据返回触发程序)。
而存储过程 可以接受参数,将结果范围给应用程序

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
如何隐藏文本直到在 Powerpoint 中单击如何隐藏文本直到在 Powerpoint 中单击Apr 14, 2023 pm 04:40 PM

如何在 PowerPoint 中的任何点击之前隐藏文本如果您希望在单击 PowerPoint 幻灯片上的任意位置时显示文本,那么设置起来既快速又容易。要在 PowerPoint 中单击任何按钮之前隐藏文本:打开您的 PowerPoint 文档,然后单击“插入 ”菜单。单击新幻灯片。选择空白或其他预设之一。仍然在插入菜单中,单击文本框。在幻灯片上拖出一个文本框。单击文本框并输入您

oracle如何添加触发器oracle如何添加触发器Dec 12, 2023 am 10:17 AM

在Oracle数据库中,您可以使用CREATE TRIGGER语句来添加触发器。触发器是一种数据库对象,它可以在数据库表上定义一个或多个事件,并在事件发生时自动执行相应的操作。

如何在MySQL中使用PHP编写触发器如何在MySQL中使用PHP编写触发器Sep 21, 2023 am 08:16 AM

如何在MySQL中使用PHP编写触发器MySQL是一种常用的关系型数据库管理系统,而PHP是一种流行的服务器端脚本语言。在MySQL中使用PHP编写触发器可以帮助我们实现自动化的数据库操作。本文将介绍如何使用PHP来编写MySQL触发器,并提供具体的代码示例。在开始之前,确保已经安装了MySQL和PHP,并且已经建立了相应的数据库表。一、创建PHP文件和数据

mysql的触发器是什么级的mysql的触发器是什么级的Mar 30, 2023 pm 08:05 PM

mysql的触发器是行级的。按照SQL标准,触发器可以分为两种:1、行级触发器,对于修改的每一行数据都会激活一次,如果一个语句插入了100行数据,将会调用触发器100次;2、语句级触发器,针对每个语句激活一次,一个插入100行数据的语句只会调用一次触发器。而MySQL中只支持行级触发器,不支持预语句级触发器。

如何在MySQL中使用Python编写自定义触发器如何在MySQL中使用Python编写自定义触发器Sep 20, 2023 am 11:04 AM

如何在MySQL中使用Python编写自定义触发器触发器是MySQL中的一种强大的功能,它可以在数据库中的表上定义一些自动执行的操作。而Python则是一种简洁而强大的编程语言,能够方便地与MySQL进行交互。本文将介绍如何使用Python编写自定义触发器,并提供具体的代码示例。首先,我们需要安装并导入PyMySQL库,它是Python与MySQL数据库进行

如何在MySQL中使用PHP编写自定义触发器和存储过程如何在MySQL中使用PHP编写自定义触发器和存储过程Sep 20, 2023 am 11:25 AM

如何在MySQL中使用PHP编写自定义触发器和存储过程引言:在开发应用程序时,我们经常需要在数据库层面进行一些操作,如插入、更新或删除数据。MySQL是一个广泛使用的关系型数据库管理系统,而PHP是一种流行的服务器端脚本语言。本文将介绍如何在MySQL中使用PHP编写自定义触发器和存储过程,并提供具体的代码示例。一、什么是触发器和存储过程触发器(Trigg

如何使用MySQL的触发器实现数据的自动归档如何使用MySQL的触发器实现数据的自动归档Aug 02, 2023 am 10:37 AM

如何使用MySQL的触发器实现数据的自动归档引言:在现代数据管理领域,数据的自动归档和清理是一个重要而又常见的需求。随着数据量的增加,保留完整的历史数据会占用过多的存储资源,并且会降低查询性能。MySQL的触发器提供了实现这一需求的有效方法。本文将介绍如何使用MySQL的触发器来实现数据的自动归档。一、什么是MySQL的触发器MySQL的触发器是一种特殊的存

如何在MySQL中使用C#编写自定义存储过程、触发器和函数如何在MySQL中使用C#编写自定义存储过程、触发器和函数Sep 20, 2023 pm 12:04 PM

如何在MySQL中使用C#编写自定义存储过程、触发器和函数MySQL是一种广泛使用的开源关系型数据库管理系统,而C#是一种强大的编程语言,对于需要与数据库进行交互的开发任务来说,MySQL和C#是很好的选择。在MySQL中,我们可以使用C#编写自定义存储过程、触发器和函数,来实现更加灵活和强大的数据库操作。本文将引导您使用C#编写并执

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구