создание MySQL Trigger для вставки во вторую таблицу - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь настроить триггер для вставки суммы во вторую таблицу после вставки первой таблицы.

Таблицы:

  • Имя первой таблицы: лайки
  • Поля: feedid

  • Имя второй таблицы: like_count

  • Поля: всего, feedid

После вставки в таблицу likes мне нужно проверить, существует ли feedid в таблице like_count.Если нет, просто вставьте его с total из 1.Если он существует, мне нужно обновить like_count.total, чтобы увеличить на единицу, где likes.feedid = like_count.feedid

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Синтаксис MySQL INSERT ... ON DUPLICATE KEY можно использовать для упрощения логики триггера.

Чтобы это работало, feedid должен быть уникальным столбцом в таблице likes_count (либо это первичный ключ столбца, либо вам необходимо создать ограничение UNIQUE для него).Тогда:

DELIMITER //
CREATE TRIGGER update_likes_count
AFTER INSERT ON likes FOR EACH ROW
BEGIN
    INSERT INTO likes_count (feed_id, total) VALUES (NEW.feedid, 1)
    ON DUPLICATE KEY UPDATE total = total + 1;
END;
//
DELIMITER;
0 голосов
/ 27 сентября 2019

Конечно, вы должны изменить имя базы данных и настроить столбцы и оператор вставки

DELIMITER //
CREATE TRIGGER `databasename`.`update_feed_count`
AFTER INSERT ON `likes` FOR EACH ROW
BEGIN
    DECLARE @feedid  VARCHAR(20);
    SELECT feedid INTO @feedid FROM like_count WHERE feedid = NEW.feedid;
    IF @feedid IS NULL OR @feedid = '' THEN
        INSERT INTO like_count (total, feedid) VAKUES (1,NEW.feedid);
    ELSE
        UPDATE like_count lc 
            WHERE `total` = `total` + 1 
            AND NEW.feedid = vc.feedid;
    END IF;
END;
DELIMITER ;
...