mysql跨库跨表使用触发器

mysql跨库跨表使用触发器

  • 1.mysql同连接跨库跨表使用触发器
    • 准备工作:
      • 1.在同一个mysql服务中,创建两个库,名为triggera,triggerb
      • 2.在两个数据库里分别创建一个表
    • 在trigger User表中创建一个insert触发器
    • 测试
  • 2.mysql不同连接跨库跨表使用触发器
    • 准备工作
      • 1.准备一个本地数据库与一个线上数据库(阿里云或华为云)
      • 2.找到本地数据库的my.ini文件,将federated存储引擎打开,放在mysqld下面
      • 3.本地创建一个线上表的映射表fed_user,确保线上数据库有个表的字段与fed_user一致
    • 本地triggerb.user,创建一个触发器
    • 测试

1.mysql同连接跨库跨表使用触发器

准备工作:

1.在同一个mysql服务中,创建两个库,名为triggera,triggerb

在这里插入图片描述

2.在两个数据库里分别创建一个表

CREATE TABLE user(
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    age INT
);

如图:

在trigger User表中创建一个insert触发器

triggera.user表创建一条数据时,triggerb.user表也会创建一条数据,并且将triggera.user表的name,给triggerb.user表的name

delimiter |
CREATE TRIGGER t_insert_name BEFORE INSERT ON triggera.user
  FOR EACH ROW
  BEGIN
    INSERT INTO triggerb.user  SET `name`=new.`name`;
  END;
delimiter ;

测试

在triggera.user 表添加一条数据

INSERT INTO user VALUES(1, '小红',12)

查看triggerb.user表中,是否有条name为小红的数据

mysql跨库跨表使用触发器_第1张图片
mysql跨库跨表使用触发器_第2张图片
测试成功,完成

2.mysql不同连接跨库跨表使用触发器

准备工作

1.准备一个本地数据库与一个线上数据库(阿里云或华为云)

2.找到本地数据库的my.ini文件,将federated存储引擎打开,放在mysqld下面

mysql跨库跨表使用触发器_第3张图片

3.本地创建一个线上表的映射表fed_user,确保线上数据库有个表的字段与fed_user一致

 CREATE TABLE `fed_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=FEDERATED CONNECTION='mysql://username:password@host:port/database/table'; 

本地triggerb.user,创建一个触发器

delimiter |
CREATE TRIGGER t_insert_name BEFORE INSERT ON triggera.user
  FOR EACH ROW
  BEGIN
    INSERT INTO triggera.fed_user  SET `name`=new.`name`;
  END;
|
delimiter ;

测试

triggera.user 添加一条数据

INSERT INTO user VALUES(2, '小蓝',15)

查看线上数据库对应表是否添加一条name为小蓝的数据

测试完成

你可能感兴趣的:(mysql,mysql,数据库)