/ / usando triggers, mySQL versão 5.5 - mysql, mysqladmin

usando triggers, mySQL versão 5.5 - mysql, mysqladmin

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 № 1

Se 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.