Zinan 0 Denunciar post Postado Outubro 8, 2006 Como é possível replicar através de uma trigger uma tabela de um banco para o outro dentro do mesmo host ??Ex.:---------Banco1 --------- Tabela1Tabela2Tabela3---------Banco2--------- Tabela1Tabela2Tabela3Eu costaria de replicar a tabela 3 do Banco 1 (Banco1.Tabela3) pra tabela 3 do banco 2 (Banco2.Tabela3), para que as duas tabelas nos dois bancos fiquem idênticas.Sei que simples fazer isso, mas será que alguém poderia por favor me ajudar?? Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Outubro 8, 2006 Oi, Taí um exemplo, utilizando mysql 5.0.22: Criar uma tabela de teste no banco test (do mysql): CREATE TABLE `test`.`teste` ( `id` tinyint(4) NOT NULL auto_increment, `nome` varchar(40) NOT NULL default '', `data` date NOT NULL default '0000-00-00', `hora` time NOT NULL default '00:00:00', `datahora` datetime default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE DATABASE bdteste2; CREATE TABLE bdteste2.teste LIKE test.teste; Este LIKE no create table indica que a tabela a ser criada deve ter a mesma estrutura da tabela utilizada na referência.Bom, agora você deve criar as Triggers para inclusão, alteração, exclusão, ou conforme a sua necessidade: quando incluir um registro: DELIMITER $$; DROP TRIGGER `test`.`insere`$$ CREATE TRIGGER `test`.`insere` AFTER INSERT on `test`.`teste` FOR EACH ROW BEGIN INSERT INTO `bdteste2`.`teste` (id,nome,data,hora,datahora) VALUES (NEW.id,NEW.nome,NEW.data,NEW.hora,NEW.datahora); END$$ DELIMITER ;$$ alterar um registro: DELIMITER $$; DROP TRIGGER `test`.`altera`$$ CREATE TRIGGER `test`.`altera` AFTER UPDATE on `test`.`teste` FOR EACH ROW BEGIN UPDATE `bdteste2`.`teste` SET id = NEW.id, nome = NEW.nome, data = NEW.data, hora = NEW.hora, datahora = NEW.datahora WHERE id = OLD.id; END$$ DELIMITER ;$$ Neste caso deve-se utilizar o OLD porque precisamos comparar o id do dbteste2.teste com o id antes da alteração do test.teste. e finalmente na exclusão: DELIMITER $$; DROP TRIGGER `test`.`exclui`$$ CREATE TRIGGER `test`.`exclui` AFTER DELETE on `test`.`teste` FOR EACH ROW BEGIN DELETE FROM `bdteste2`.`teste` WHERE id = OLD.id; END$$ DELIMITER ;$$ O NEW refere-se aos novos valores informados na tabela, e o OLD são os valores antigos.As Triggers foram criadas na tabela teste do banco de dados test (original). Se estiver utilizando PhpMyAdmin e não conseguir criar Triggers, tente outro programa como o SQLYog por exemplo. Fiz os testes aqui e funfou beleza, se tiver dúvidas/problemas diz ae. flw Compartilhar este post Link para o post Compartilhar em outros sites
Zinan 0 Denunciar post Postado Outubro 9, 2006 @cassitosMuito Obrigado, as consegui fazer no SQLYog sem problemas.Vlw Compartilhar este post Link para o post Compartilhar em outros sites