diff --git a/sql/triggers.mysql b/sql/triggers.mysql
index d4f4f76aabc694f28c28eee742eab531746655f0..b5c6a2d42ff8150d2cd6ec2607187b6edcc7e0ca 100644
--- a/sql/triggers.mysql
+++ b/sql/triggers.mysql
@@ -9,6 +9,7 @@ FOR EACH ROW
         status              = (CASE WHEN status!='BLOCKED' THEN 'LOADING' ELSE 'BLOCKED' END)
     WHERE analysis_id = NEW.analysis_id;
 
+
 CREATE TRIGGER delete_job AFTER DELETE ON job
 FOR EACH ROW
     UPDATE analysis_stats SET
@@ -22,20 +23,22 @@ DELIMITER $$
 
 CREATE TRIGGER update_job AFTER UPDATE ON job
 FOR EACH ROW
-BEGIN
-    UPDATE analysis_stats SET
-        total_job_count     = total_job_count     - 1,
-        unclaimed_job_count = unclaimed_job_count - (CASE WHEN (OLD.status = 'READY' AND OLD.semaphore_count <= 0) THEN 1 ELSE 0 END),
-        done_job_count      = done_job_count      - (CASE OLD.status WHEN 'DONE'   THEN 1 WHEN 'PASSED_ON' THEN  1 ELSE 0 END),
-        failed_job_count    = failed_job_count    - (CASE OLD.status WHEN 'FAILED' THEN 1                          ELSE 0 END)
-    WHERE analysis_id = OLD.analysis_id;
-    UPDATE analysis_stats SET
-        total_job_count     = total_job_count     + 1,
-        unclaimed_job_count = unclaimed_job_count + (CASE WHEN (NEW.status = 'READY' AND NEW.semaphore_count <= 0) THEN 1 ELSE 0 END),
-        done_job_count      = done_job_count      + (CASE NEW.status WHEN 'DONE'   THEN 1 WHEN 'PASSED_ON' THEN  1 ELSE 0 END),
-        failed_job_count    = failed_job_count    + (CASE NEW.status WHEN 'FAILED' THEN 1                          ELSE 0 END)
-    WHERE analysis_id = NEW.analysis_id;
-END$$
+    CASE WHEN (OLD.status<>NEW.status OR OLD.analysis_id<>NEW.analysis_id) THEN
+        BEGIN
+            UPDATE analysis_stats SET
+                total_job_count     = total_job_count     - 1,
+                unclaimed_job_count = unclaimed_job_count - (CASE WHEN (OLD.status = 'READY' AND OLD.semaphore_count <= 0) THEN 1 ELSE 0 END),
+                done_job_count      = done_job_count      - (CASE OLD.status WHEN 'DONE'   THEN 1 WHEN 'PASSED_ON' THEN  1 ELSE 0 END),
+                failed_job_count    = failed_job_count    - (CASE OLD.status WHEN 'FAILED' THEN 1                          ELSE 0 END)
+            WHERE analysis_id = OLD.analysis_id;
+            UPDATE analysis_stats SET
+                total_job_count     = total_job_count     + 1,
+                unclaimed_job_count = unclaimed_job_count + (CASE WHEN (NEW.status = 'READY' AND NEW.semaphore_count <= 0) THEN 1 ELSE 0 END),
+                done_job_count      = done_job_count      + (CASE NEW.status WHEN 'DONE'   THEN 1 WHEN 'PASSED_ON' THEN  1 ELSE 0 END),
+                failed_job_count    = failed_job_count    + (CASE NEW.status WHEN 'FAILED' THEN 1                          ELSE 0 END)
+            WHERE analysis_id = NEW.analysis_id;
+        END;
+    END CASE$$
 
 DELIMITER ;