`
Donald_Draper
  • 浏览: 979849 次
社区版块
存档分类
最新评论

MySQL触发器

阅读更多
CHANGE MASTER:http://dev.mysql.com/doc/refman/5.5/en/change-master-to.html
Trigger Syntax and Examples:http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
NDB Cluster Replication: Multi-Master and Circular Replication:
http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-replication-multi-master.html
MySQL触发器Trigger实例篇:http://blog.csdn.net/hireboy/article/details/18079183
--log-slave-updates:http://dev.mysql.com/doc/refman/5.6/en/replication-options-slave.html#option_mysqld_log-slave-updates
Mysql主从配置:http://donald-draper.iteye.com/admin/blogs/2337407
LOCK TABLES and UNLOCK TABLES:https://dev.mysql.com/doc/refman/5.5/en/lock-tables.html
前面我们讲过mysql主从同步及串行同步,其实mysql还有一种变通的复制策略,利用触发器,
在一个表增加,更新,删除DML后,对另一个表或另一个库中的表进行相同的工作,今天我们就来测试一下触发器。
在测试之前,要新建两个数据库,一个为test,一个为log,
分别在test和log创建测试表结构test:
/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50041
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50041
File Encoding         : 65001

Date: 2016-11-24 18:16:59
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

新建插入触发器:
DELIMITER  $$
    USE `test` $$
    DROP TRIGGER  IF EXISTS  `test_insert` $$
    CREATE
        TRIGGER `test_insert` AFTER INSERT ON `test` 
        FOR EACH ROW 
	      BEGIN
               INSERT INTO `log`.`test` SET id = NEW.id, name=NEW.name;
        END;$$
DELIMITER;

插入数据:
INSERT INTO test VALUES (1,'donald');
INSERT INTO test VALUES (2,'jamel');

在log数据库中查看对应的test表:
mysql> use log;
Database changed
mysql> select * from test;
+----+--------+
| id | name   |
+----+--------+
|  1 | donald |
|  2 | jamel  |
+----+--------+
创建更新触发器:
DELIMITER $$
    USE `test`$$
    DROP TRIGGER  IF EXISTS  `test_update` $$
    CREATE
        TRIGGER `test_update` AFTER UPDATE ON `test` 
        FOR EACH ROW 
	BEGIN
               UPDATE `log`.`test` 
	       SET 
	       name=NEW.name  
	       WHERE id = OLD.id;
        END;$$
DELIMITER;

更新test数据:
update test set `name` = 'rain' where id =2;

查询log数据库test表:
mysql> select * from test;
+----+--------+
| id | name   |
+----+--------+
|  1 | donald |
|  2 | rain   |
+----+--------+
2 rows in set
创建删除触发器:
DELIMITER $$
    USE `test`$$
    DROP TRIGGER  IF EXISTS  `test_delete` $$
    CREATE
        TRIGGER `test_delete` AFTER DELETE ON `test` 
        FOR EACH ROW 
	      BEGIN
               DELETE FROM `log`.`test` WHERE id = OLD.id;
        END;$$
DELIMITER;

删除数据:
DELETE FROM test WHERE id = 2;
查询log数据库test表:
mysql> select * from test;
+----+--------+
| id | name   |
+----+--------+
|  1 | donald |
+----+--------+
1 row in set
总结:
从测试结果来看,触发器完成复制功能,关键是表中要有主键,利用mysql的同步策略和触发器,可以实现循环复制,及数据整合的功能

0
0
分享到:
评论

相关推荐

    mysql触发器之创建多个触发器操作实例分析

    本文实例讲述了mysql触发器之创建多个触发器操作。分享给大家供大家参考,具体如下: 这次记录的内容mysql 版本必须得是5.7.2+的哈,之前的会不好使的。废话不多说,咱们开始正文哈。 在mysql 5.7.2+版本之前,我们...

    mysql触发器之触发器的增删改查操作示例

    MySQL触发器是数据库管理系统提供的一种机制,用于在特定的数据操作(如INSERT、UPDATE、DELETE)发生之前或之后自动执行预定义的SQL语句。这些触发器可以用来实现复杂的业务规则,确保数据的一致性和完整性,或者...

    MYSQL触发器教程.doc

    MySQL触发器是数据库管理系统中的一种重要机制,它允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生前后自动执行一段预定义的SQL代码。触发器的引入是为了满足更复杂的数据完整性需求,提供数据验证、业务...

    mysql触发器+存储过程

    文件“MySQL存储过程.pdf”和“OReilly.MySQL.Stored.Procedure.Programming.rar”可能会提供关于如何创建、调用和管理MySQL存储过程的详细指南,而“MySQL触发器.rar”则可能包含触发器的创建、使用和优化方面的...

    MySQL触发器.pdf

    ### MySQL触发器详解 #### 引言 MySQL触发器,作为MySQL 5.0版本引入的一项重要特性,为数据库管理提供了更为精细的控制能力。触发器允许在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行SQL语句,...

    mysql触发器

    MySQL触发器是数据库管理系统中的一个重要特性,用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这些语句可以是复杂的业务逻辑,用来确保数据的一致性、完整性和安全性。在本篇...

    MYSQL触发器使用详解

    MYSQL触发器,可以使用它用来进行监控,例如商品价格变化,下单后商品库存减少等实用性操作!

    mysql触发器使用

    在深入探讨MySQL触发器的使用之前,我们先来理解一下什么是触发器以及它在数据库管理中的作用。触发器是数据库中一种特殊的存储过程,当特定的事件(如INSERT、UPDATE或DELETE操作)在指定的表上发生时自动执行。...

    mysql触发器教程

    ### MySQL触发器教程知识点详解 #### 一、MySQL触发器简介 MySQL触发器是一种存储在数据库中的特殊类型的存储过程,当特定的事件(如插入、更新或删除数据)发生时自动执行。它们允许用户定义一系列复杂的规则和...

    mysql触发器文档

    ### MySQL触发器知识点详解 #### 引言 MySQL触发器是一种服务器端的程序,它可以响应特定的数据库事件(如插入、更新或删除记录)而自动执行。触发器自MySQL 5.0版本起被引入,这标志着MySQL在功能性上的一大进步,...

    MySQL触发器.rar

    MySQL触发器是数据库管理系统中的一个重要概念,主要用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这些语句可以是复杂的业务逻辑,用于实现数据验证、同步或其他自动化任务。...

    mysql触发器之创建使用触发器简单示例

    本文实例讲述了mysql触发器之创建使用触发器。分享给大家供大家参考,具体如下: 我们可以可以使用CREATE TRIGGER语句创建一个新的触发器,来看下具体的语法: CREATE TRIGGER trigger_name trigger_time trigger_...

    MySQL触发器、存储过程、自定义函数、视图示例

    ### MySQL触发器、存储过程、自定义函数、视图示例 #### 一、MySQL触发器 触发器是一种特殊类型的存储过程,它被设计为在特定事件(如INSERT、UPDATE或DELETE操作)发生时自动执行。触发器可以用来强制业务规则、...

    mysql触发器.zip

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据库操作(如INSERT、UPDATE或DELETE)发生之前或之后执行自定义的SQL代码。这些自动执行的代码块可以用来实现复杂的业务逻辑,确保数据的一致性和...

    mysql触发器使用实例

    MySQL触发器是数据库管理系统中的一个重要特性,它允许在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行预定义的SQL语句。这为数据库的业务规则提供了强大的支持,可以确保数据的一致性和完整性。以下是...

    mysql触发器.pdf

    【MySQL触发器详解】 MySQL触发器是数据库管理系统中的一种重要特性,它允许用户在特定的数据库操作(如INSERT、UPDATE或DELETE)发生之前或之后自动执行预定义的SQL语句。这种特性使得数据库能实现更复杂的业务...

    MYSQL触发器在PHP项目中用来做信息备份、恢复和清空

    在MySQL数据库中,触发器是一种非常强大的工具,可以在特定的数据操作(如INSERT, UPDATE, DELETE)发生时自动执行预定义的SQL语句。在PHP项目中,我们可以利用触发器来实现信息的备份、恢复和清空功能,以提高数据...

Global site tag (gtag.js) - Google Analytics