Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memasukkan baris baru menggunakan pemicu di tabel yang sama

Anda tidak akan dapat menyisipkan ke tabel yang sama dari pemicu . Saya akan mengganti pemicu Anda dengan Prosedur, lalu menyalurkan semua pembaruan status melalui prosedur:

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 di sini

Meskipun prosedur akan memerlukan beberapa modifikasi pada kode Anda (yaitu Anda perlu memanggil prosedur daripada memperbarui data secara langsung), prosedur memiliki manfaat karena lebih jelas - pemicu yang melakukan sesuatu secara otomatis di latar belakang bisa jadi tidak intuitif.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perulangan melalui variabel $_POST

  2. Jumlah maksimum record dalam tabel database MySQL

  3. Menyimpan izin aplikasi dalam database

  4. Cara DROP kolom dari tabel di MySQL menggunakan nomor kolom

  5. Permintaan lambat setelah memutakhirkan mysql dari 5,5 ke 5,6