Ir para conteúdo

POWERED BY:

Arquivado

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

nogo0d

[Resolvido] Triggers com condições.

Recommended Posts

Boa tarde!

 

Soube à pouco tempo que exitia a possibilidade re fazer triggers n mysql, e estou com dificuldades!

 

Alguém me pode ajudar neste exemplo abaixo?

CREATE TRIGGER trig AFTER INSERT ON tabela1
FOR EACH ROW
IF NEW.valor != '' THEN
INSERT INTO tabela2 (valor) VALUES (NEW.valor)
END IF

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TRIGGER trig AFTER INSERT ON tabela1
FOR EACH ROW
IF NEW.valor != '' THEN
INSERT INTO tabela2 (valor) VALUES (NEW.valor)
END IF

O TRIGGER que você desenvolveu acima está quase correto, faltam apenas alguns caracteres para que ele funcione.

Um dica é, sempre que você te mais de uma linha comando, sendo comandos difetentes em Stored Routines, considere utilizar BEGIN END entre estes comandos, como abaixo:

 

-> mudei o contexto da conexão para o banco de dados teste, criei uma tabela para testarmos o seu modelo de TRIGGER e em seguida criei o TRIGGER de maneira correta:

 

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 5.0.18-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buff

mysql> use test
Database changed

mysql> CREATE TABLE tabela1 (valor int);
Query OK, 0 rows affected (0.09 sec)

mysql> DELIMITER //
mysql> CREATE TRIGGER trig AFTER INSERT ON tabela1
    -> FOR EACH ROW
    -> BEGIN
    ->   IF NEW.valor != '' THEN
    ->    INSERT INTO tabela2 (valor) VALUES (NEW.valor);
    ->   END IF;
    -> END;
    -> //
Query OK, 0 rows affected (0.01 sec)

Mudamos o delimitador para que quando o programa chegasse no ";" no final da linha do INSERT, ele não fosse enviado para o parser do MySQL de forma errada, ou seja, para que o TRIGGER não fosse enviado pela metade. Perceba que "embrulhamos" todos os comandos da lógica do TRIGGER em declarações BEGIN END.

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

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.