Du vil ikke være i stand til at indsætte i den samme tabel fra en trigger . Jeg ville erstatte din trigger med en Procedure og derefter kanalisere alle statusopdateringer gennem proceduren:
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;
Selvom proceduren vil kræve en vis ændring af din kode (dvs. du bliver nødt til at kalde proceduren frem for at opdatere dataene direkte), har proceduren fordelen af at være mere indlysende - triggere, der gør ting automatisk i baggrunden, kan være ikke-intuitive.