当前位置: 首页 > 面试题库 >

如何创建触发器以将数据插入另一台服务器上的数据库

邓深
2023-03-14
问题内容

我在不同的主机上有2个mysql数据库,想在将数据插入到另一个数据库后将触发器插入到另一个数据库中。我是mysql的新手,在sql
server中我可以创建链接服务器并完成它。但是如何在mysql中做呢?两个数据库都有相似的表

CREATE TABLE `tsttbl` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` smallint(6) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

问题答案:

为了能够继续进行此操作,必须首先确保两个服务器具有相同的配置。为了完成您想做的事情,可以在两个服务器上结合使用FEDERATED存储引擎和触发器,以允许每个服务器更新另一个服务器的数据库。

您需要创建与其他服务器上的用户表联合的本地表。因此,如果一条记录已经存在于另一台服务器上,但在此位置不存在,我们希望另一台服务器上的插入操作抛出一个错误,阻止我们在此处创建记录…而不是在此处创建记录冲突的ID;

CREATE TABLE remote_user (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `age` smallint(6) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
CONNECTION='mysql://username:pass@the_other_host:port/schema/user';

然后,您可以创建触发器;

DELIMITER $$

CREATE TRIGGER user_bi BEFORE INSERT ON user FOR EACH ROW
BEGIN
  INSERT INTO remote_user (ID,name, age) VALUES (NEW.ID,NEW.name, NEW.Age);
END $$

CREATE TRIGGER user_bu BEFORE UPDATE ON user FOR EACH ROW
BEGIN
  UPDATE remote_user 
     SET ID= NEW.ID,
         name= NEW.name
         age = NEW.Age
   WHERE ID = OLD.ID;
END $$

CREATE TRIGGER user_bd BEFORE DELETE ON user FOR EACH ROW
BEGIN
   DELETE FROM remote_user
   WHERE ID= OLD.ID;
END $$

DELIMITER ;


 类似资料:
  • 问题内容: 我目前有一个在云实例上运行的实时Redis服务器,我想将此Redis服务器迁移到新的云实例并将该实例用作我的新Redis服务器。如果是MySQL,我将从旧服务器中导出数据库并将其导入新服务器中。我应该如何使用redis? PS:我不想设置复制。我想将Redis服务器完全迁移到新实例。 问题答案: 通过运行或从命令行将数据库快照保存到dump.rdb中。这将在与Redis服务器相同的文件

  • 问题内容: 我可以在服务器A上安装php脚本并连接到服务器B上的MySQL数据库吗? 如果是,将如何进行?提前致谢 问题答案: 其简单的上述所有方法都非常复杂 假设您在服务器B上有数据库,在服务器A上有网站(假设它的IP为192.234.12.1) 在cpanel上将服务器B的IP列入白名单 并在数据库中创建一个具有足够特权的新用户(例如,该用户已经过测试) 然后将该用户创建为test@192.2

  • 我使用kops设置了我的Kubernetes集群,并且是在本地机器上设置的。因此我的目录存储在本地计算机上,但我在中设置了状态存储。 我现在正在设置我的配置项服务器,我想从该框中运行我的命令。如何将现有状态导入该服务器?

  • 问题内容: 如果用户有任何机会更改其成员名称,我需要在历史记录表中跟踪当前更改的成员名称。 例如,当前信息是: 会员编号:5534会员姓名 :james 用户将其更改为: 会员编号:5534会员名称 :标记 到现在为止,“成员”将保留当前值: 5534和标记 和 “ MemberLastChanged”将保持: 5534和詹姆斯 如何使用触发器在T-SQL中实现此目标? 问题答案: 您创建一个UP

  • 我试图从同一个服务器上的数据库的旧备份创建一个新数据库。当使用SQL服务器管理工作室并试图从备份恢复到新数据库时,我得到这个错误 在谷歌搜索之后,我找到了这段代码 我想知道移动语句是否会干扰备份来自该服务器的数据库? 谢谢,感谢所有的帮助。

  • 问题内容: 我有两个桌子和。我需要一些行插入从,它被插入之后。我知道这个问题,但我无法解决。请帮忙。 我为触发器编写了以下代码: 现在,当我插入行时,将添加到,但不添加到。它引发以下错误: _消息515,级别16,状态2,过程trigger_UpdateItemDetails,行11 无法将值NULL插入表’dbStockHandling.dbo.tbl_ItemDetails’的列’Purcha