zoukankan      html  css  js  c++  java
  • 跨库触发器

    场景:

    需要同步两个不同系统的user表的积分字段,但是系统逻辑又超级复杂,实在不能在系统程序上面统一用接口去同步了。

     

    1.创建数据a和数据库b,

    2.在两个库中分别插入下表

    CREATE TABLE `users` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
      `integral` int(11) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    

      

    3.在数据库a中添加同步积分触发器

    delimiter ||
    DROP TRIGGER
    IF EXISTS t_update_member||
    CREATE TRIGGER t_update_member AFTER UPDATE ON a.users FOR EACH ROW
    BEGIN
        IF @disable_trigger IS NULL THEN
            SET @disable_trigger = 1;
            UPDATE b.users SET
                `integral`=new.`integral`
            WHERE
                `id`= OLD.`id` ;
            SET @disable_trigger = NULL;
        END IF;
    END||
    delimiter ;
    

      

    4.在数据库b中添加同步积分触发器

    delimiter ||
    DROP TRIGGER
    IF EXISTS t_update_member||
    CREATE TRIGGER t_update_member AFTER UPDATE ON b.users FOR EACH ROW
    BEGIN
        IF @disable_trigger IS NULL THEN
            SET @disable_trigger = 1;
                UPDATE a.users SET
                    `integral`=new.`integral`
                WHERE
                    `id`= OLD.`id` ;
            SET @disable_trigger = NULL;
        END IF;
    END||
    delimiter ;
    

      

     5.测试:在a库的users表中修改integral的值时,b库的users也会同时修改啦,简单几步把程序中很多复杂的逻辑完成了。

    6.触发器的语法简单解析,看完后你也能写出简单的触发器了,复杂的就需要自己去查存储事务的语法啦。

  • 相关阅读:
    Codeigniter:如何写一个好的Model
    CodeIgniter
    CodeIgniter
    Codeigniter CRUD代码快速构建
    html适配Anroid手机
    使用malloc分别分配2KB,6KB的内存空间,打印指针地址
    大话spring.net之IOC
    Spring2.5学习3.3_@Autowire注解实现手动装配
    OPPO通过AWS节约大量成本提供海外服务
    mysql 父子结构排序
  • 原文地址:https://www.cnblogs.com/shifu204/p/11727241.html
Copyright © 2011-2022 走看看