Перейти к содержимому


Как выполнить вычисление ПОСЛЕ удаления записи?


Сообщений в теме: 3

#1 Cutter

    Активный участник

  • Пользователи
  • PipPipPip
  • 35 сообщений

Отправлено 11 Сентябрь 2017 - 09:31

Доброго времени суток всем!

Собственно, сабж. При работе с подтаблицами бывает необходимым что-бы вычисление запускалось в главной таблице при изменениях в подчинённой. Т.е. в главной вычисление вызываем по изменению поля 'поле суммы', а в подтаблице делаем $line['поле связи']['поле суммы'] = $line['поле связи']['поле суммы'] + 1 для запуска вычисления.

При модификации в подтаблице всё работает замечательно. Но при вызове по событию удаления в подтаблице, у нас СНАЧАЛА проходит модификация $line['поле связи']['поле суммы'] = $line['поле связи']['поле суммы'] + 1, а собственно удаление записи в подтаблице случается ПОТОМ.

Пока вышел из положения прямым запросом вида
$sql="UPDATE `таблица` SET `status`=2 WHERE `id` = ".$line['ID'];
$result = sql_query($sql);
в вычислении подтаблицы.

Но может можно как-то более цивилизованно?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 11 Сентябрь 2017 - 10:25

Боюсь, при вашей схеме вычислений более "прямых" вариантов не существует. Разве что попробовать заменить событие удаления на событие изменения поля "Статус записи" - оно сработает после изменения. Но гарантированно не уверен что это сработает.

#3 AntonKravchenko

    Активный участник

  • Пользователи
  • PipPipPip
  • 152 сообщений
  • Пол:Мужчина
  • Город:Нижний Новгород

Отправлено 11 Сентябрь 2017 - 12:22

если время запуска после удаления некритично, можно в cron положить соответствующее вычисление и запускать ночью или раз в час

#4 Cutter

    Активный участник

  • Пользователи
  • PipPipPip
  • 35 сообщений

Отправлено 11 Сентябрь 2017 - 14:48

CbCoder, за мысль спасибо! Надо её подумать.
AntonKravchenko, не вариант, нужно по событию в подтаблице.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных