Nie będziesz w stanie wstawić do tej samej tabeli z wyzwalacza . Zamieniłbym wyzwalacz na procedurę, a następnie przekierował wszystkie aktualizacje statusu za pomocą procedury:
CREATE PROCEDURE UpdateJobStatus(jobId INT, NewStatus NVARCHAR(50))
BEGIN
UPDATE job
SET `Status` = NewStatus
WHERE job_id = jobId;
IF NewStatus = 'COMPLETED' AND jobId <=6 THEN
INSERT INTO job(cycle_id, job_id, status)
SELECT cycle_id, job_id+1, 'WATING_TO_START'
FROM job
WHERE job_id = jobId;
END IF;
END;
Chociaż procedura będzie wymagała pewnych modyfikacji kodu (tj. będziesz musiał wywołać procedurę zamiast bezpośrednio aktualizować dane), procedura ma tę zaletę, że jest bardziej oczywista - wyzwalacze wykonujące czynności automagicznie w tle mogą być nieintuicyjne.