sql >> Databáze >  >> RDS >> Mysql

Vložení nového řádku pomocí spouštěče ve stejné tabulce

Nebudete moci vkládat do stejné tabulky ze spouštěče . Nahradil bych váš spouštěč procedurou a poté všechny aktualizace stavu nasměroval pomocí procedury:

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 zde

Přestože postup bude vyžadovat určitou úpravu vašeho kódu (tj. budete muset proceduru volat, nikoli přímo aktualizovat data), má výhodu v tom, že je jasnější – spouštěče dělající věci automaticky na pozadí mohou být neintuitivní.




  1. Horních n procent horních n %

  2. Jaký je nejlepší způsob, jak zkopírovat podmnožinu řádků tabulky z jedné databáze do druhé v Postgresu?

  3. Kontingenční data v T-SQL

  4. MySql:pokud hodnota existuje UPDATE else INSERT