UPDATE
                  
                  
                      ON `RESPONSES`
                  
                  
                      FOR EACH ROW
                  
                  
                  BEGIN
                  
                  
                      IF old.STATUS = 0 AND (new.STATUS = 1 OR new.STATUS = 2) THEN
                  
                  
                          SET new.`SERIAL_NUM` = IFNULL(
                  
                  
                                                         (SELECT `SERIAL_NUM`
                  
                  
                                                          FROM `RESPONSES`
                  
                  
                                                          WHERE `SURVEY_ID` = old.`SURVEY_ID`
                  
                  
                                                          ORDER BY SERIAL_NUM DESC
                  
                  
                                                          LIMIT 0, 1),
                  
                  
                                                         0
                  
                  
                                                     ) + 1;
                  
                  
                      END IF;
                  
                  
                  END;
                  
                  
                  Когда у меня несколько одновременно статусов меняется - я на дедлок натыкаюсь. Как решить эту проблему?
                  
                  
                
А что ты хочешь сделать при обновлении статуса?
Select for update можно попробовать, но не факт, что поможет.
А что триггер делать должен?
@piterden Триггер делает автоинкремент SERIAL_NUM при смене статуса на определенный
Ну так вот и проблема
Обсуждают сегодня