Fórum Como criar uma trigger urgente !! #419927

15/07/2012

0

Pessoal novo e nunca criei uma trigger , gostaria muito da ajuda de vocês;
tenho um database com nome de paradox7 no MYSQL dentro dela tenho campos chamado almox e o outro solicitação.
Estou criando um trigger para atualizar o saldo do estoque da tabela almox .
na hora de criar a trigger me da esse erro

error 1064 42000 you have an error in your sql syntax check the manual that corresponds to your MYSQL server version for the right syntax to use near CREATE TRIGGER


Alguem pode me ajudar !

Obrigado
Watson Rocha

Watson Rocha

Responder

Posts

15/07/2012

William

Colega eu nunca criei Trigger no Mysql só no Firebird, mas aparentemente na msg de erro consta que seu código está com algum erro de sintaxe, o correto seria vc postar o código.

Uma observação essa dúvida pertence ao fórum MYSQL hein ..
Responder

Gostei + 0

15/07/2012

Watson Rocha

WIIfL

Boa Tarde !
Estou usando esse comando.
CREATE TRIGGER tr_aur
AFTER INSERT ON almox
FOR EACH ROW BEGIN
UPDATE solicitacao SET quantidade= quantidade- NEW.quantidadeWHERE quantidade= NEW.quantidade;
END;

Vou tentar explicar melhor. eu uma tabela e os campos dessa tabela eu criei no HEISQL dentro do prompt do MYSQL
eu faço assim :

use paradox7; <-- esse é meu database

depois
CREATE TRIGGER tr_aur
AFTER INSERT ON almox
FOR EACH ROW BEGIN
UPDATE solicitacao SET quantidade= quantidade- NEW.quantidadeWHERE quantidade= NEW.quantidade;
END;

eu quero que funcione assim.
quando o usuario solicitar a material via sistema automaticamente ,atualize o saldo do produto.

tenho duas tabela solicitacao
e a outra almox .quando solicitado na tabela solicitacao atualize a tabela almox

Obrigado espero ter explicado correto !!

Responder

Gostei + 0

15/07/2012

Watson Rocha

estou tentando novamente e esta dando erro na linha 6

CREATE TRIGGER
AUR
AFTER INSERT ON paradox7 <<---- (paradox7 é minha database)
FOR EACH ROW
BEGIN
UPDATE almox set quantidade WHERE quantidade=new.quantidade(almox é minha tabela e a quantidade é o meu campo aqui da erro)
end;
Responder

Gostei + 0

16/07/2012

Joel Rodrigues

Você não cria triggers no database em si e sim na tabela.
Responder

Gostei + 0

16/07/2012

Bruno Leandro

me parece que o update esta com problema tente desta forma, colocando o campo codigo correspondente ao seu campo

CREATE TRIGGER
AUR
AFTER INSERT ON paradox7
FOR EACH ROW
BEGIN
UPDATE almox set quantidade=new.quantidade WHERE codigo=new.codigo;
end;
Responder

Gostei + 0

16/07/2012

Watson Rocha

Brunão por me responder.
O que vc me passou aparentemente está dando certo , ela só me apresentou um erro na linha 7 . aonde fica o END .

como eu posso finalizar essa trigger ?

Obrigado
Responder

Gostei + 0

16/07/2012

Bruno Leandro

voce substituiu o codigo para o seu campo chave primaria da tabela
Responder

Gostei + 0

16/07/2012

Watson Rocha

Bruno Bom dia !

Eu fiz esse jeito , e deu certo ,mas na hora do usuario inserir dados no campo quantidade no sistema esta dando erro.

delimiter $$
CREATE TRIGGER
AUR
AFTER INSERT ON almox
FOR EACH ROW
BEGIN
UPDATE almox SET quantidade=new.quantidade WHERE codigo=new.codigo;
END;
delimiter $$

Abraço !
Responder

Gostei + 0

16/07/2012

Watson Rocha

Brunão segue o erro..

cant update table almox in stored function/trigger because it is already used by statement which invoked this stored function/trigger

Será que tem que acrescentar mais comando script ?

Valeu Abraço.
Responder

Gostei + 0

16/07/2012

Bruno Leandro

Watson vou tentar explicar a trigger talvez te ajude a entender


CREATE TRIGGER AUR -- esta linha significa que voce esta criando uma trigger com o nome AUR
AFTER INSERT ON paradox7 -- aqui significa que apos inserir os registros na tabela paradox7 essa trigger sera executada
FOR EACH ROW -- significa que em todos os registros da tabela paradox7 sera executado o comando
BEGIN -- inicio de um bloco
UPDATE almox set quantidade=new.quantidade WHERE codigo=new.codigo;
--ou seja apos inserir um registro na tabela paradox7
--será executado um update na tabela almox atualizando a quantidade para a quantidade definida na tabela paradox7, aonde o --codigo na tabela almox é o codigo utilizado ao inserir na tabela paradox7
end; -- finalizador
Responder

Gostei + 0

16/07/2012

Watson Rocha

Bruno fico bem claro que vc me explicou .
Cosegui fazer a trigger o paradox7 que eu te passei era o meu databases ,mas já alterei .
e ficou assim

delimiter $$
CREATE TRIGGER
AUR
AFTER INSERT ON almox
FOR EACH ROW
BEGIN
UPDATE almox SET quantidade=new.quantidade WHERE codigo=new.codigo;
END;
delimiter $$

Maravilha funcionou , agora é um seguinte quando eu abro o Delphi e vou inserir dados no campo quantidade e retorna esse erro na tela do Delphi...

cant update table almox in stored function/trigger because it is already used by statement which invoked this stored function/trigger

Obrigado pela força Bruno !!
Responder

Gostei + 0

16/07/2012

Watson Rocha

Pessoal alguem ja viu esse erro ?


cant update table almox in stored function/trigger because it is already used by statement which invoked this stored function/trigger

Criei essa trigger , e na hora de inserir dado na tela do delphi 7 ele aparece esse erro acima !

Alguem pode me dar uma luz !

Obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar