nogo0d 0 Denunciar post Postado Janeiro 13, 2010 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
Wagner Bianchi 0 Denunciar post Postado Janeiro 13, 2010 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