/ / з використанням тригерів, mySQL версії 5.5 - mysql, mysqladmin

використовуючи тригери, mySQL версії 5.5 - mysql, mysqladmin

У мене є 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.

Редагувати: Я змінив попередню вставку після вставки.

Редагувати: додано тригер видалення.