2011-12-18 2 views
0

У меня есть таблица ВЕБСАЙТОВ следующим образом:триггер MySQL, чтобы подвести столбец, где Идентификатор столбца равен последней вставленной строки идентификатор и магазин

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

У меня есть таблица ПРОГРЕСС следующим образом:

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

Когда А строка вставлена ​​в PROGRESS с использованием INSERT INTO,

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

ОДНАКО ...

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

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

+0

только быстрое примечание - у вас набрано количество ошибок в схеме таблиц, должно быть только одно _m_ - может сделать приятный исход для будущего развития rs :) –

+0

HAHAA Я всегда записывал его на 2 м ... Я никогда не осознавал ... ура :) –

ответ

2

Вам действительно не нужно использовать триггер, вы можете просто добавить прогресс в существующие строки в 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 Syntax

+0

Теперь я понял, что мне не нужны триггеры! но спасибо за пример обеспечить :) –

2

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

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

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

Смежные вопросы