2015-02-15 2 views
0

У меня есть две таблицы, записи и mountPanels. То, что я хочу сделать, - это когда запись вставлена ​​в mountPanels, суммируйте панели в этой таблице по идентификатору вставленной записи и обновите таблицу «Записи» этой суммой (которая совпадает с тем же идентификатором).mySql после триггера вставки, подытожить значение по идентификатору и обновить другую таблицу

Когда я пытаюсь ниже ПОСЛЕ запуска ВСТАВИТЬ:

UPDATE Entries SET panels = (SELECT SUM(panels) FROM mountPanels WHERE Entries.EntryID = new.EntryID) 

Он суммирует все, но когда я пытаюсь

UPDATE Entries SET panels = (SELECT SUM(panels) FROM mountPanels WHERE Entries.EntryID = mountPanels.EntryID) 

Он суммирует все правильно ID, но обновляет каждую строку. Я просто хочу, чтобы он обновил определенную строку с идентификатором, который был введен последним.

ответ

0

У вашего оператора обновления нет предложения where, поэтому, конечно, он обновляет каждую строку. Кроме того, ваше утверждение, похоже, не правильно использует new.

Попробуйте это:

UPDATE Entries SET 
panels = (
    SELECT SUM(panels) 
    FROM mountPanels 
    WHERE EntryID = new.EntryID) 
WHERE EntryID = new.EntryID 
+0

Ах, имеет смысл. Я определенно не был уверен, как указать, что было суммировано в этом разделе. Спасибо! Я узнаю из вашего примера здесь. Очень признателен!!! – sactonet

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