Обновление триггера mysql - PullRequest
0 голосов
/ 04 мая 2020

У меня есть таблицы расписаний с этими столбцами

  • id
  • start_time
  • end_time
  • per_user_time
  • number_of_visitors

каждый раз, когда создается новая запись, я хочу вычислить интервал минут между start_time и end_time и разделить на минуты per_user_time и вставить в столбец number_of_visitors с помощью триггера

вот что У меня есть для расчета и работает правильно, но как вставить в number_of_visitors

DB::unprepared('CREATE TRIGGER update_number_of_patients BEFORE INSERT ON `schedules` FOR EACH ROW
                BEGIN 
                    SET NEW.number_of_patients = 
                    (SELECT @minutes := (TIME_TO_SEC(`end_time`) - TIME_TO_SEC(`start_time`))/60 AS `minutes`, @interval:= TIME_TO_SEC(`per_patient_time`)/60 AS `interval`, @minutes / @interval AS `patients` FROM schedules)
                END
         ');

Спасибо за ваше время

Это образец моего желаемого результата


id | start_time | end_time | per_user_time | minutes | interval number_of_visitors
1 | 08:00:00  | 13:00:00 |  00:30:00  |     300  |    30   |   10

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

1 Ответ

0 голосов
/ 04 мая 2020

Мне наконец-то удалось заставить его работать. вот как я это сделал

DB::unprepared('CREATE TRIGGER update_number_of_patients_before_insert BEFORE INSERT ON `schedules` FOR EACH ROW
            BEGIN 
                SET @minutes = (SELECT (TIME_TO_SEC(NEW.end_time) - TIME_TO_SEC(NEW.start_time))/60 FROM `schedules` LIMIT 1);
                SET @interval = (SELECT TIME_TO_SEC(NEW.per_patient_time)/60 FROM `schedules` LIMIT 1); 
                SET NEW.number_of_patients = @minutes / @interval;
            END
     ');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...