Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

William de Castro

Triggers no MySQL

Recommended Posts

Bom, vamos dar um tiro pra cada lado e ver qual acerta primeiro.

 

Pessoal nunca lidei com triggers, alguém sabe um bom tutorial em português.

 

Ou pode me dar umas dicas básicas.

 

Onde se cria um trigger ? na raiz do PHPmyAdmin ? ou dentro do BD ?

 

Quero fazer uma trigger bem simples(acho qe todas são).

 

quando alterar os dados do campo 'city' tabela 'user_info' bd 'omni22' , alterar também o campo 'Nome' tabela 'Tabela_cidade' bd 'omni22'. e vice-versa.

 

Alguém se habilita ?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, bom mesmo o curso, mas como é gratuíto é bem expresso tambem,

 

criei o trigger assim só pra testes

DELIMITER $$
CREATE
 TRIGGER atualiza_cidade after update on Tabela_Cidade for each row
BEGIN
   update Tabela_Cidade2 set Nome = NEW.Nome;
END$$

 

mas tipo quando eu altero uma linha da Tabela_Cidade, muda o o campo Nome de TODAS as linhas da Tabela_Cidade2, :s

 

como faço pra alterar só a linha que foi alterada na outra tabela ?

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui usei o campo 'Codigo' que é um campo em comum com os mesmos valores para limitar a ação do gatilho, ficou assim

 

DELIMITER $$
CREATE
 TRIGGER atualiza_cidade2 after update on Tabela_Cidade2 for each row
BEGIN
   update Tabela_Cidade set Nome = NEW.Nome where Codigo = NEW.Codigo;
END$$

 

Resta saber se tem uma forma de fazer sem nenhum campo em comum.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, ainda to com dúvidas como seria uma trigger de inserção de uma tabela em outra.

 

estou usando esta sintaxe.

 

DELIMITER $$
CREATE TRIGGER cadastro2 BEFORE INSERT ON Tabela_Cidade2
 FOR EACH ROW BEGIN
       INSERT INTO Tabela_Cidade SET Nome = NEW.Nome;
       INSERT INTO Tabela_Cidade SET Codigo = NEW.Codigo;
       INSERT INTO Tabela_Cidade SET UF = NEW.UF;
       INSERT INTO Tabela_Cidade SET Cep = NEW.Cep;
       INSERT INTO Tabela_Cidade SET Published = NEW.Published;
END$$

 

Porém quando insiro uma nova linha na Tabela_Cidade2, na Tabela_Cidade1 os campos aparecem com NULL, exceto o campo 'Published', tentei desmarcar o NULO e colocar o valor padrão como 'None', mas os campos ficam vazios dai.

 

Alguém tem alguma sugestão ?

 

Valeu (forever alone asidhasohdsada)

 

Achei a sintaxe certa pra inserir como eu quero,

 

DELIMITER $$
CREATE TRIGGER cadastro4 BEFORE INSERT ON Tabela_Cidade2
 FOR EACH ROW BEGIN
INSERT INTO Tabela_Cidade  (Nome, Codigo, Cep, UF, Published) values (NEW.Nome2, NEW.Codigo2, NEW.Cep2, NEW.UF2, NEW.Published2);

END$$

 

Só vou esperar uma resposta sobre:

 

Consegui usei o campo 'Codigo' que é um campo em comum com os mesmos valores para limitar a ação do gatilho, ficou assim

 

DELIMITER $$

CREATE

TRIGGER atualiza_cidade2 after update on Tabela_Cidade2 for each row

BEGIN

update Tabela_Cidade set Nome = NEW.Nome where Codigo = NEW.Codigo;

END$$

 

 

Resta saber se tem uma forma de fazer sem nenhum campo em comum.

 

Valeu

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.