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

Dapatkan Nilai LAMA di Pemicu MySQL SETELAH Pernyataan Pembaruan

Dalam UPDATE TRIGGER , Anda dapat menggunakan kode OLD kata kunci untuk mengakses data baris yang digantikan oleh pembaruan. NEW kata kunci memungkinkan mengakses data baris masuk yang akan menggantikan baris lama, jika berhasil.

Contoh UPDATE pemicunya adalah:

CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
    FOR EACH ROW
    BEGIN
       IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
         INSERT INTO AuditSomeTable(ID, LastChangedBy) 
         VALUES (OLD.ID, OLD.LastChangedBy);
       END IF;
    END;

SQLFiddle di sini

Bergantung pada jenis pemicu yang dibuat, OLD dan NEW baris mungkin tidak tersedia untuk Anda:

MASUKKAN PEMICU

  • Akses ke NEW baris semu saja.

PERBARUI PEMICU

  • Akses ke NEW dan OLD baris semu

HAPUS PEMICU

  • Akses hanya ke OLD baris semu

yaitu tidak ada OLD baris pada INSERT pemicu, dan tidak ada NEW baris pada DELETE pemicu.

Pertanyaan OP

OP belum memberikan kode yang sebenarnya, dan pesan kesalahan yang dimaksud dalam komentar:

menunjukkan bahwa OP secara tidak sengaja telah membuat INSERT TRIGGER dan bukan UPDATE TRIGGER seperti yang ditunjukkan dalam pertanyaan. Sebuah INSERT pemicu tidak memiliki OLD tabel semu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah tabel tanpa mengunci seluruh tabel

  2. mysql menggabungkan hasil kueri secara berdampingan

  3. Apakah MySQL mengizinkan panggilan balik dalam C sehingga ketika terjadi perubahan, saya dapat diberi tahu?

  4. Ubah format tampilan bidang tanggal dan waktu di MySQL PHP

  5. Apakah indeks mempercepat lebih dari> perbandingan di MySQL?