mysql触发器实例

   测试表1
?

1
2
3
4
5
6
7
8

DROP TABLE IF EXISTS test;                 
CREATE TABLE test ( 
  id           bigint(11) unsigned NOT NULL AUTO_INCREMENT, 
  name         varchar(100) NOT NULL DEFAULT '', 
  type         varchar(100),
  create_time  datetime, 
  PRIMARY KEY (ID) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

  测试表2

?

1
2
3
4
5
6
7
8
9

DROP TABLE IF EXISTS test_hisy;                 
CREATE TABLE test_hisy ( 
  id           bigint(11) unsigned NOT NULL AUTO_INCREMENT, 
  name         varchar(100) NOT NULL DEFAULT '', 
  type         varchar(100),
  create_time  datetime,
  operation    varchar(100) COMMENT '操作类型',
  PRIMARY KEY (ID) 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

  insert触发器

  表test新增记录后,将type值为“1”的记录同时插入到test_hisy表中(AFTER INSERT:录入后触发, BEFORE INSERT:录入前触发)

?

1
2
3
4
5
6
7
8
9
10
11

DELIMITER //
DROP TRIGGER IF EXISTS t_after_insert_test//
CREATE TRIGGER t_after_insert_test
AFTER INSERT ON test
FOR EACH ROW
BEGIN
    IF new.type='1' THEN
    insert into test_hisy(name, type, create_time, operation)
    values(new.name, new.type, new.create_time, 'insert');
    END IF;
END;//

  update触发器

  表test修改时,若type值为“2”则将修改前的记录同时插入到test_hisy表中(AFTER UPDATE:修改后触发, BEFORE UPDATE:修改前触发)

?

1
2
3
4
5
6
7
8
9
10
11

DELIMITER //
DROP TRIGGER IF EXISTS t_before_update_test//
CREATE TRIGGER t_before_update_test
BEFORE UPDATE ON test
FOR EACH ROW
BEGIN
    IF new.type='2' THEN
    insert into test_hisy(name, type, create_time, operation)
    values(old.name, old.type, old.create_time, 'update');
    END IF;
END;//

  delete触发器

  表test删除记录前,将删除的记录录入到表test_hisy中(AFTER DELETE:删除后触发, BEFORE DELETE:删除前触发)

?

1
2
3
4
5
6
7
8
9

DELIMITER //
DROP TRIGGER IF EXISTS t_before_delete_test//
CREATE TRIGGER t_before_delete_test
BEFORE DELETE ON test
FOR EACH ROW
BEGIN
    insert into test_hisy(name, type, create_time, operation)
    values(old.name, old.type, old.create_time, 'delete');
END;//

  注:以上触发器例子中出现的new为修改后的数据, old为修改前的数据

时间: 2024-09-23 21:07:42

mysql触发器实例的相关文章

Mysql触发器实例教程(创建 删除 修改 查看)

1.创建触发器的语句: CREATE TRIGGER <触发器名称> <-- { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON <表名称> FOR EACH ROW <触发器SQL语句> -触发器  代码如下 复制代码 --create trigger 名字 --on 表名 --触发动作 --for/after insert/update/delete --as --t-sql select * from sho

MySQL触发器运用于迁移和同步数据的实例教程_Mysql

1.迁移数据进行数据库移植,SQL Server=>MySQL.SQL Server上有如下的Trigger SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER TRIGGER [trg_risks] ON dbo.projectrisk FOR INSERT, UPDATE AS BEGIN UPDATE projectrisk SET classification = case when calc>= 9 then 3 when c

MySQL触发器的应用案例

网友问题:对于MySQL主从复制结构中,如何让Slave过滤delete操作. 问题分析:该问题对应的是保全所有的记录,包括delete的记录. 对于MySQL本身的过滤规则粒度是精确到表的粒度. 主从可以由不同的触发器 问题结果,在slave上建立before触发器,对于delete的记录备份至另一个表. 存在问题,MySQL触发器在高并发下的性能问题. 触发器源代码: CREATE TRIGGER delbak BEFORE DELETE ON tb_name FOR EACH ROW BE

MySQL 触发器的基础操作(六)_Mysql

1.为什么使用触发器:      在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构,而数据库对象触发器则用来实现由一些表事件触发的某个操作.在数据库系统中,当执行表事件时,则会激活触发器,从而执行器包含的操作.触发器的操作包含创建.查看.删除.      触发器是数据库对象之一,该对象与编程语言 中的函数非常类似,都需要声明.执行等.但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发.激活从而实现执行.例如:在学生表中有学生名字.学生总数字段,每当添加一条学生记录时,

PHP使用Mysql事务实例解析_php技巧

本文实例讲解了PHP使用MySQL事物的实例,并备有注释加以详细说明.分享给大家供大家参考之用. 具体实例如下所示: <?php //数据库连接 $conn = mysql_connect('localhost', 'root', ''); mysql_select_db('test', $conn); mysql_query("SET NAMES GBK"); /* 支持事务的表必须是InnoDB类型 一段事务中只能出现一次: mysql_query('START TRANSA

mysql实例-mysql里实例的概念是什么意思?

问题描述 mysql里实例的概念是什么意思? 我是一个mysql初学者,在mysql中我们通常会遇到"实例"这个概念,我想知道"实例"的定义是什么?在mysql的英语文档中,""实例""的英语单词是什么? 解决方案 应该对应于instance.就是一个操作的数据库的代称. 解决方案二: 指多个mysql进程

MySQL多实例部署案例

昨天晚上在群中和一些网友聊到了MySQL多实例的话题,最早接触MySQL多实例还是在1年前,那会我刚步入运维行业,做过MySQL多实例的相关实验,在后来的工作中也很少用到多实例,一直就淡漠了它,昨天再次提及,故此再次重新整理下以前的笔记,参考一些大牛的观点,也参考我的好友贺总(尊称)的意见,特此写下这篇文章!废话不说,切入正题.... 在同一台物理服务器上部署多个实例,而多实例的部署方式简单,但是如何才能减少我们生产环境的维护成本,如何减少我们出错的机会,如何方便我们后续的迁移和清理等工作,以及

Centos下的MySQL多实例安装配置

系统环境:centos 6.2 64位 内核版本: 2.6.32-220.el6.x86_64 mysql版本:5.1.62 一,MySQL多实例介绍及MySQL多实例的特点 1.什么是MySQL多实例? MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务. 2.MySQL多实例的特点有以下几点: 1).有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源

SQL触发器实例讲解

SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.  常见的触发器有三种:分别应用于Insert , Update , Delete 事件.  我为什么要使用触发器?比如,这么两个表: 复制代码代码如下: Create Table Student( --学生表  StudentID int primary key, --学号  ....  )  Create Table BorrowRec