Mysql
 sql >> база данни >  >> RDS >> Mysql

Вмъкване на нов ред с помощта на тригер на същата таблица

Няма да можете да вмъкнете в същата таблица от тригер . Бих заменил тригера ви с процедура и след това ще канализирам всички актуализации на състоянието през процедурата:

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;

Sql Fiddle тук

Въпреки че процедурата ще изисква известна модификация на вашия код (т.е. ще трябва да извикате процедурата, вместо да актуализирате данните директно), процедурата има предимството да е по-очевидна - тригерите, които правят нещата автоматично във фонов режим, могат да бъдат неинтуитивни.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO извлича една колона от таблица в едномерен масив

  2. Не може да се стартира mysql сървъра в ubuntu

  3. MySQL Един към много към JSON формат

  4. Пивотна таблица с помощта на MySQL

  5. Необходим ли е SET CHARACTER SET utf8?