Eu tenho uma tabela com um id (auto incremento), nome de usuário, email, ícone, comentário, classificação, data (na atualização current_timestamp, deixada vazia como agora () não funciona assim deve ser anterior) e conta.
O que eu quero fazer é configurar um gatilho para cadainsert (count + 1), para cada delete (count -1). O resultado final seria usado para paginação, portanto, se eu tiver 10 comentários 5 em uma página (10/2) -> #paginação teria duas páginas. De qualquer forma, gostaria de me dar as boas-vindas ao web design responsivo usando jquery Ajax, JSON etc;
Meu código SQL é mostrado abaixo para uma atualização de inserção na contagem, mas a contagem não está incrementando, como eu iria excluir também!
DELIMITER $$
CREATE
TRIGGER `CommentsTrigger` BEFORE INSERT ON Comments
FOR EACH ROW
BEGIN
UPDATE Comments
SET counts = (Select COUNT(*) from Comments)+ 1;
END $$
DELIMITER;
versão 5.5!
Eu acho que o valor precisa ser salvo como um inteiro, mas isso é um palpite!
Respostas:
2 para resposta № 1Se você quiser manter todas as contagens de registros, é melhor salvá-lo em outra tabela e alterar o comando update para aumentar e diminuir um campo.
Seu código, se funciona, é muito lento devido ao uso de count (*).
Use algo assim:
DELIMITER $$
CREATE
TRIGGER `CommentsTrigger` AFTER INSERT ON Comments
FOR EACH ROW
BEGIN
UPDATE tbl_stat
SET counts = counts+1;
END $$
DELIMITER ;
DELIMITER $$
CREATE
TRIGGER `CommentsTrigger` AFTER DELETE ON Comments
FOR EACH ROW
BEGIN
UPDATE tbl_stat
SET counts = counts-1;
END $$
DELIMITER ;
Você deve criar tbl_stat (id int, counts int).
E crie delete triger como acima, exceto "counts = counts-1".
Por apenas uma vez, insira suas linhas de tabela de comentários em contagem para tbl_stat.
Edit: eu mudei o antes de inserir após a inserção.
Editar: adicionei o gatilho de exclusão.