У мене є 1 таблиця з ідентифікатором (auto increment), ім'я користувача, електронна пошта, значок, коментар, рейтинг, дата (на оновлення current_timestamp, залишена порожньою, як зараз () не функціонує так повинна бути попередньою датою) і вважається.
Те, що я хочу зробити, це встановити тригер для кожногоinsert (кол + 1), для кожного видалення (кол -1). Кінцевий результат буде використаний для нумерації сторінок, так що якщо у мене 10 коментарів до сторінки (10/2) -> #pagination буде мати дві сторінки. У всякому разі я хотів би привітати себе реагувати веб-дизайну з використанням AJAX jquery, JSON і т.д.
Мій код SQL показано нижче для вставки оновлення на рахунку, але кількість не збільшується, як би я також видалити!
DELIMITER $$
CREATE
TRIGGER `CommentsTrigger` BEFORE INSERT ON Comments
FOR EACH ROW
BEGIN
UPDATE Comments
SET counts = (Select COUNT(*) from Comments)+ 1;
END $$
DELIMITER;
версія 5.5!
Я думаю, що значення потрібно зберегти як ціле число, але це припущення!
Відповіді:
2 для відповіді № 1Якщо ви хочете зберегти всі підрахунки записів, краще зберегти його в іншій таблиці і змінити команду оновлення, щоб збільшити або зменшити поле.
Ваш код, якщо він працює, дуже повільний через використання count (*).
Використовуйте щось на зразок цього:
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 ;
Ви повинні створити tbl_stat (id int, counts int).
І створити видалення triger як вище, крім "counts = counts-1".
Лише один раз вставляйте рядки таблиці коментарів до tbl_stat.
Редагувати: Я змінив попередню вставку після вставки.
Редагувати: додано тригер видалення.