我在不同的主机上有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 ;