Существует две таблицы: «ответы» и «сообщения», и этот триггер помещается в таблицу «ответы».Расчет вычисления триггера Mysql
Каждый раз, когда новая запись помещается в таблицу ответов, триггер проверяет, соответствуют ли определенные условия для значений в строке в таблице сообщений с идентификатором соответствия в качестве новой записи.
Вот то, что я до сих пор:
CREATE TABLE posts(
p_Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
p_Health INT UNSIGNED NOT NULL DEFAULT 0,
p_Bump INT UNSIGNED NOT NULL DEFAULT 0,
p_Time TIMESTAMP);
CREATE TABLE replies(
r_Id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
r_To INT UNSIGNED NOT NULL,
r_Time TIMESTAMP);
CREATE TRIGGER bump AFTER INSERT ON replies
FOR EACH ROW
BEGIN
IF posts.p_Bump < 5 WHERE posts.p_Id = NEW.r_To AND (SELECT COUNT(r_To) FROM replies WHERE r_To = NEW.r_To)%10 = 10 THEN
UPDATE posts
SET posts.p_Bump = posts.p_Bump + 1 AND
SET posts.p_Health = 0 WHERE posts.p_Id = NEW.r_To;
END IF;
END;
INSERT INTO posts() VALUES();
INSERT INTO replies(r_To) VALUES(1);
INSERT INTO replies(r_To) VALUES(1);
INSERT INTO posts() VALUES();
INSERT INTO replies(r_To) VALUES(2);
INSERT INTO replies(r_To) VALUES(2);
INSERT INTO replies(r_To) VALUES(2);
«r_To» является сокращением для «ответить», он сохраняет идентификатор поста ответ направлен на. SQLFiddle говорит, что ошибка в строке 4, где я пытаюсь сделать арифметическую операцию с SELECT COUNT(r_To)
по модулю 10.
Невозможно создать SQLFiddle, это не спасёт мою схему, если это неверно.
r_To это имя столбца или псевдоним? – scaisEdge
имя столбца в таблице ответов – Lolechi