Bạn sẽ không thể chèn vào cùng một bảng từ trình kích hoạt . Tôi sẽ thay thế trình kích hoạt của bạn bằng một Thủ tục và sau đó chuyển tất cả các cập nhật trạng thái thông qua quy trình:
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;
Mặc dù quy trình sẽ yêu cầu một số sửa đổi đối với mã của bạn (tức là bạn sẽ cần gọi quy trình thay vì cập nhật dữ liệu trực tiếp), nhưng quy trình này có lợi ích rõ ràng hơn - việc kích hoạt thực hiện mọi thứ tự động trong nền có thể không trực quan.