U kunt niet invoegen in dezelfde tabel vanuit een trigger . Ik zou je trigger vervangen door een Procedure, en dan alle statusupdates door de procedure kanaliseren:
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;
Hoewel de procedure enige aanpassing aan uw code vereist (d.w.z. u moet de procedure aanroepen in plaats van de gegevens rechtstreeks bij te werken), heeft de procedure het voordeel dat deze meer voor de hand ligt - triggers die dingen automatisch op de achtergrond doen, kunnen niet-intuïtief zijn.