码迷,mamicode.com
首页 > 数据库 > 详细

MySQL笔记:触发器

时间:2018-03-16 13:35:39      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:trigger   date   图片   where   database   for   创建   none   null   

一、基础知识

触发器是由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笔记:触发器

标签:trigger   date   图片   where   database   for   创建   none   null   

原文地址:https://www.cnblogs.com/arseneyao/p/8574966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!