在這裏,我有兩個不同的服務器上的MySQL服務器,我不想複製一個表數據到另一個使用FEDERATED。在mysql中使用觸發器FEDERATED
但使用下面的觸發代碼它不工作,甚至沒有錯誤。
查找原圖&下面的聯邦表結構。
爲表
vxp_config
CREATE TABLE IF NOT EXISTS `vxp_config` (
`cfg_id` int(11) NOT NULL AUTO_INCREMENT,
`cfg_key` varchar(50) NOT NULL,
`cfg_value` varchar(500) NOT NULL,
`cfg_field_type` enum('TEXT','TEXTAREA','FILE','CHECKBOX') NOT NULL DEFAULT 'TEXT',
PRIMARY KEY (`cfg_id`),
UNIQUE KEY `cfg_key` (`cfg_key`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
原稿臺結構3210聯合表結構表
vxp_config
CREATE TABLE IF NOT EXISTS `vxp_config` (
`cfg_id` int(11) NOT NULL AUTO_INCREMENT,
`cfg_key` varchar(50) NOT NULL,
`cfg_value` varchar(500) NOT NULL,
`cfg_field_type` enum('TEXT','TEXTAREA','FILE','CHECKBOX') NOT NULL DEFAULT 'TEXT',
PRIMARY KEY (`cfg_id`),
UNIQUE KEY `cfg_key` (`cfg_key`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 CONNECTION='mysql://root:[email protected]:3306/replicate/vxp_config';
觸發器
vxp_config
DROP TRIGGER IF EXISTS `config_bd`;
DELIMITER //
CREATE TRIGGER `config_bd` BEFORE DELETE ON `vxp_config`
FOR EACH ROW BEGIN
DELETE FROM vxp_config
WHERE cfg_id= OLD.cfg_id;
END
//
DELIMITER ;
DROP TRIGGER IF EXISTS `config_bi`;
DELIMITER //
CREATE TRIGGER `config_bi` BEFORE INSERT ON `vxp_config`
FOR EACH ROW BEGIN
INSERT INTO vxp_config (cfg_id,cfg_key, cfg_value,cfg_field_type) VALUES (NEW.cfg_id,NEW.cfg_key, NEW.cfg_value,NEW.cfg_field_type);
END
//
DELIMITER ;
DROP TRIGGER IF EXISTS `config_bu`;
DELIMITER //
CREATE TRIGGER `config_bu` BEFORE UPDATE ON `vxp_config`
FOR EACH ROW BEGIN
UPDATE vxp_config
SET cfg_id= NEW.cfg_id,
cfg_key= NEW.cfg_key,
cfg_value = NEW.cfg_value,
cfg_field_type = NEW.cfg_field_type
WHERE cfg_id = OLD.cfg_id;
END
//
DELIMITER ;
你可以請我建議任何方式從服務器複製到服務器兩個基於條件的數據? –
不,我會這樣做,正如我之前所說的那樣,將複製master的數據,並將所有可能需要直接在從站上的觸發器設置爲「工作」表 – sathia