dougdomi@gmail.com Postado Fevereiro 5, 2011 Denunciar Share Postado Fevereiro 5, 2011 (editado) Boa Tarde;O trigger abaixo é importado sem problemas dentro do banco de dados...Meu objetivo seria que depois que fosse feita a alteração do campo "quantia" e depois esse campo fosse = 0 então removia ele do banco...To a atarde toda pra fazer isso funciona...já tentei das duas formas abaixo:1°DELIMITER | CREATE TRIGGER checkinv AFTER UPDATE ON inventarioFOR EACH ROWBEGINDELETE FROM inventario WHERE quantia < 1;END;|DELIMITER ;2° DELIMITER | CREATE TRIGGER checkinv AFTER UPDATE ON inventarioFOR EACH ROWBEGINIF NEW.quantia < 1 THENDELETE FROM inventario WHERE id = NEW.id;END IF;END;|DELIMITER ; Editado Fevereiro 7, 2011 por Denis Courcy Mudança no título. Ver regra 3.6 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 7, 2011 Denunciar Share Postado Fevereiro 7, 2011 Boa Tarde;O trigger abaixo é importado sem problemas dentro do banco de dados...Meu objetivo seria que depois que fosse feita a alteração do campo "quantia" e depois esse campo fosse = 0 então removia ele do banco...To a atarde toda pra fazer isso funciona...já tentei das duas formas abaixo: ...Poderia explicar melhor, por favor?Não consegui entender o que você quer deletar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dougdomi@gmail.com Postado Fevereiro 7, 2011 Autor Denunciar Share Postado Fevereiro 7, 2011 depois que ele atualizar o campo X na tabela inventario e esse valor fica = 0 então ele remove do banco o registro que tinha sido atualizado...entende? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 7, 2011 Denunciar Share Postado Fevereiro 7, 2011 depois que ele atualizar o campo X na tabela inventario e esse valor fica = 0 então ele remove do banco o registro que tinha sido atualizado...entende?Você não conseguirá excluir um registro de uma tabela, através de um trigger, se este registro estiver sendo 'usado' por outro comando sql de alteração (insert/update/delete) da mesma tabela.Você sempre receberá a mensagem:Error Code : 1442Can't update table 'minhatabela' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.Você pode alterar (incluir/excluir) registro de outra tabela mas não da tabela que você está trabalhando no momento. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dougdomi@gmail.com Postado Fevereiro 7, 2011 Autor Denunciar Share Postado Fevereiro 7, 2011 qual forma eu poderia fazer para resolver este meu problema? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 7, 2011 Denunciar Share Postado Fevereiro 7, 2011 qual forma eu poderia fazer para resolver este meu problema?Executando uma segunda instrução que verificasse se o valor é igual a zero para aquele registro específicao.Algo parecido com o abaixo:delete from minhatabela where meuvalor = 0 and ID = valorDoIDNaqueleRegistro;Entenda por ID o campo chave primária de sua tabela. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dougdomi@gmail.com Postado Fevereiro 7, 2011 Autor Denunciar Share Postado Fevereiro 7, 2011 e tem como eu fazer o update e o delete numa query só? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Fevereiro 7, 2011 Denunciar Share Postado Fevereiro 7, 2011 e tem como eu fazer o update e o delete numa query só?Não. Ações diferentes, Instruções separadas. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
dougdomi@gmail.com
Boa Tarde;
O trigger abaixo é importado sem problemas dentro do banco de dados...
Meu objetivo seria que depois que fosse feita a alteração do campo "quantia" e depois esse campo fosse = 0 então removia ele do banco...
To a atarde toda pra fazer isso funciona...
já tentei das duas formas abaixo:
1°
DELIMITER |
CREATE TRIGGER checkinv AFTER UPDATE ON inventario
FOR EACH ROW
BEGIN
DELETE FROM inventario WHERE quantia < 1;
END;
|
DELIMITER ;
2°
DELIMITER |
CREATE TRIGGER checkinv AFTER UPDATE ON inventario
FOR EACH ROW
BEGIN
IF NEW.quantia < 1 THEN
DELETE FROM inventario WHERE id = NEW.id;
END IF;
END;
|
DELIMITER ;
Editado por Denis CourcyMudança no título. Ver regra 3.6
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.