триггер mysql для суммирования столбца, где идентификатор столбца равен последнему вставленному идентификатору строки и сохранению - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть таблица ВЕБ-САЙТА примерно так:

WEBSITE
web ID | url         | progress
-------------------------------
1      | example.com | 67

У меня есть таблица PROGRESS:

PROGRESS
progress id | linking website id | amount to increase
---------------------------------------------------
1           | 1                  | 60
2           | 1                  | 7

Когда строка вставляется в PROGRESS с помощью INSERT INTO,

Я использую php и mysql для получения накопленных значений из таблицы PROGRESS, а затем сохраняю новое значение в значение прогресса из таблицы WEBSITE.

ОДНАКО ...

Мне было интересно, смогу ли я использовать эти триггеры, о которых я слышал, для автоматического суммирования нового значения прогресса и его сохранения?

Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

На самом деле вам не нужно использовать триггер, вы можете просто добавить прогресс к существующей строке в website, но если вы хотите попробовать триггер, вы можете использовать следующее

delimiter $$

CREATE TRIGGER progress_update AFTER INSERT ON `progress`
  FOR EACH ROW BEGIN
    UPDATE `website` SET `progress` = `progress` + NEW.ammount_to_increase WHERE web_ID = NEW.linking_website_id;
  END;
$$

delimiter ;

Дополнительную информацию о синтаксисе и использовании триггеров можно также найти на странице руководства 12.1.11. CREATE TRIGGER Синтаксис

2 голосов
/ 19 декабря 2011

Вы можете использовать триггеры, но вам это не нужно;просто сделайте это:

update website set 
progress = progress + ?
where web_id = ?

и получите значения из вашего запроса.Это гарантированно работает, потому что обновление является атомарным (вам не нужно беспокоиться о других процессах, вставляющих / обновляющих одновременно)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...