[AJUDA] Trigger

2 views
Skip to first unread message

Rodrigo Carneiro

unread,
Feb 2, 2010, 8:31:46 AM2/2/10
to php-brasil
Bem, eu deveria postar num fórum de MySQL, mas como os que encontrei
são muito parados resolvi postar aqui visto que tem muitas pessoas com
conhecimento enorme sobre, sou novato na área e me deparei com a
necessidade de criar num pequeno sistema uma espécie de histórico de
tudo o que ocorre no sistema, andei pesquisando e descobri que as
'triggers' foram criadas com esse intuito, agora a dúvida é, como eu
monto um "gatilho" e como o disparo. Gostaria de que por exemplo
quando eu inserisse na minha tabela processos fosse inserido na minha
tabela histórico por exemplo id, nome, data, id_proc e etc...

Alguém poderia me dar uma força? Mesmo que um site ou referência...

Obrigado desde já.

maiquel krolikowski leonel

unread,
Feb 2, 2010, 8:54:23 AM2/2/10
to php-b...@googlegroups.com
por exemplo


CREATE TRIGGER nome_da_trigger [AFTER | BEFORE] [INSERT|UPDATE|DELETE] ON nome_da_tabela FOR EACH ROW
 código
END

mas tem umas manhas tipo, quando tu está dentro de um evento delete, tu não tem AFTER com os dados, uma fez que a trigger roda depois de deletar, logo tu perde a referencia com o INSERT é o contrario, tu não tem BEFORE pq ainda não tem os dados, isso é representado nos código da trigger

CREATE TRIGGER nome_da_trigger  BEFORE DELETE ON nome_da_tabela FOR EACH ROW
    -- deleta os registros fk dessa tabela
    DELETE FROM outra_tbl WHERE nome_da_tabela_id = OLD.id
END
o OLD representa o dado "antigo" pois estou num evento BEFORE que roda depois de uma deleção

já um evento AFTER seria referenciado com NEW.nome do campo

acho que já tem alguma coisa pra comçar...

mais dai só lendo mais a fundo na documentação das triggers ...



--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.




--
Maiquel Leonel
web developer
http://www.maiquelleonel.com.br
mai...@maiquelleonel.com.br / skywi...@gmail.com

Rodrigo Carneiro

unread,
Feb 2, 2010, 8:58:01 AM2/2/10
to php-b...@googlegroups.com
Vlw, já to dando uma estudada, se pode me dar um exemplo real?
obrigado!

maiquel krolikowski leonel

unread,
Feb 2, 2010, 9:04:33 AM2/2/10
to php-b...@googlegroups.com
o exemplo que ue passei é real...

Rodrigo Carneiro

unread,
Feb 2, 2010, 9:15:15 AM2/2/10
to php-b...@googlegroups.com
HAHA desculpa me expressei mal...
Tipo eu queria ver em funcionamento, tipo criar 2 tabelas e a trigger que afeta a segunda quando inserisse na primeira.

Rodrigo Carneiro

unread,
Feb 4, 2010, 9:02:44 AM2/4/10
to php-brasil
Po surgiu uma outra dúvida... será que eu tenho como pegar os dados do
cara que da fazendo o insert com a trigger correspondente...
Ou seja o cara quando inserir na tabela processos a trigger vai
disparar e numa outra tabela chamada histórico guardar por exemplo a
hora, id_processo, id_usuario, e outros...
tem como?

Obrigado!

maiquel krolikowski leonel

unread,
Feb 4, 2010, 9:17:57 AM2/4/10
to php-b...@googlegroups.com
até tem como, desde que o usuario esteja no banco, de outra meneira teria que existir inumeros relacionamentos....

uma maneira é tu manter o banco multi-locatario replicando o id de quem está fazendo a trigger dos usuarios do sistema, assim tu consegue pegar os dados

poderia ser feito tb uma trigger after insert para isso, desde que exista o relacionamento ...


--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/php-brasil?hl=pt-BR.

Dantes Fernandes

unread,
Feb 4, 2010, 9:26:51 AM2/4/10
to php-b...@googlegroups.com
Talvez, ao inves de triger, poderias usar SP pra passar todos os parametros que voce quiser e controlar a logica em um unico lugar.
Mas isso depende de como esta estruturado seu banco e sua aplicacao. Veja o que é mais vantagem pra vc.


Att,

Dantes Guilherme.

Rodrigo Carneiro

unread,
Feb 4, 2010, 9:48:40 AM2/4/10
to php-brasil
SP seria Stored Procedure? ;D

On 4 fev, 12:26, Dantes Fernandes <dantesguilhe...@gmail.com> wrote:
> Talvez, ao inves de triger, poderias usar SPpra passar todos os parametros


> que voce quiser e controlar a logica em um unico lugar.
> Mas isso depende de como esta estruturado seu banco e sua aplicacao. Veja o
> que é mais vantagem pra vc.
>
> Att,
>
> Dantes Guilherme.
>
> Em 4 de fevereiro de 2010 11:17, maiquel krolikowski leonel <

> skywishm...@gmail.com> escreveu:


>
> > até tem como, desde que o usuario esteja no banco, de outra meneira teria
> > que existir inumeros relacionamentos....
>
> > uma maneira é tu manter o banco multi-locatario replicando o id de quem
> > está fazendo a trigger dos usuarios do sistema, assim tu consegue pegar os
> > dados
>
> > poderia ser feito tb uma trigger after insert para isso, desde que exista o
> > relacionamento ...
>
> > Em 4 de fevereiro de 2010 12:02, Rodrigo Carneiro <

> > rodrigometall...@gmail.com> escreveu:


>
> > Po surgiu uma outra dúvida... será que eu tenho como pegar os dados do
> >> cara que da fazendo o insert com a trigger correspondente...
> >> Ou seja o cara quando inserir na tabela processos a trigger vai
> >> disparar e numa outra tabela chamada histórico guardar por exemplo a
> >> hora, id_processo, id_usuario, e outros...
> >> tem como?
>
> >> Obrigado!
>
> >> --
> >> Você está recebendo esta mensagem porque se inscreveu no grupo

> >> "php-brasil" dos Grupos do Google.>> Para postar neste grupo, envie um e-mail paraphp...@googlegroups.com
> >> .
> >> Para cancelar a inscrição nesse grupo, envie um e-mail para>>php-brasil+...@googlegroups.com<php-brasil%2Bunsu...@googlegroups.com>


> >> .
> >> Para obter mais opções, visite esse grupo em
> >>http://groups.google.com/group/php-brasil?hl=pt-BR.
>
> > --
> > Maiquel Leonel
> > web developer
> >http://www.maiquelleonel.com.br

> > maiq...@maiquelleonel.com.br / skywishm...@gmail.com


>
> > --
> > Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil"

> > dos Grupos do Google.> Para postar neste grupo, envie um e-mail paraphp...@googlegroups.com.
> > Para cancelar a inscrição nesse grupo, envie um e-mail para>php-brasil+...@googlegroups.com<php-brasil%2Bunsu...@googlegroups.com>

Dantes Fernandes

unread,
Feb 4, 2010, 10:04:21 AM2/4/10
to php-b...@googlegroups.com
Isso mesmo.

Att,

Dantes Guilherme.


Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para php-brasil+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages