MySQL笔记:触发器

Posted arseneyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL笔记:触发器相关的知识,希望对你有一定的参考价值。

一、基础知识

触发器是由INSERT、UPDATE和DELETE等事件触发的某种特定操作。

当满足触发器的触发条件时,数据库系统就会执行触发器中定义的程序语句。

 

二、创建

FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发。

mysql默认以分号作为执行语句的结束,在创建触发器的过程中需要用到分号。为了解决该问题需要用到DELIMITER语句将结束符变成其他符号,创建完成后再将结束符变回分号。

技术分享图片
CREATE DATABASE MYDB;
USE MYDB;

CREATE TABLE STUDENT (
  NUMBER INT      NOT NULL PRIMARY KEY,
  NAME   CHAR(20) NOT NULL
);

CREATE TABLE INSERT_TIMELINE (
  INSERT_TIME DATETIME NOT NULL
);

CREATE TABLE DELETE_TIMELINE (
  DELETE_TIME DATETIME NOT NULL
);

CREATE TRIGGER INSERT_TRIGGER
  AFTER INSERT
  ON STUDENT
  FOR EACH ROW INSERT INTO INSERT_TIMELINE VALUES (NOW()); #创建一个执行语句的触发器

DELIMITER &&
CREATE TRIGGER DELETE_TRIGGER
  AFTER DELETE
  ON STUDENT
  FOR EACH ROW
  BEGIN
    INSERT INTO DELETE_TIMELINE VALUES (NOW());
    INSERT INTO DELETE_TIMELINE VALUES (NOW());
  END &&
DELIMITER ; #创建多个执行语句的触发器

DROP DATABASE MYDB;
View Code


三、查看

技术分享图片
SHOW TRIGGERS; #无法查询指定触发器
SELECT *
FROM information_schema.TRIGGERS; #查询所有触发器
SELECT *
FROM information_schema.TRIGGERS
WHERE TRIGGER_NAME = INSERT_TRIGGER; #查询指定触发器
SELECT *
FROM information_schema.TRIGGERS
WHERE TRIGGER_NAME = DELETE_TRIGGER;
View Code

 

四、删除

技术分享图片
DROP TRIGGER INSERT_TRIGGER;
DROP TRIGGER DELETE_TRIGGER;
View Code

 


以上是关于MySQL笔记:触发器的主要内容,如果未能解决你的问题,请参考以下文章

转:mysql触发器笔记

MySQL笔记:触发器

(转)Mysql存储引擎__笔记

MySQL笔记触发器,存储过程和函数

《mysql必知必会》读书笔记--触发器及管理事务处理

MySQL-08-笔记