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

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

Buat pemicu seperti itu.

DELIMITER $$

CREATE TRIGGER ad_mytable_each AFTER DELETE ON MyTable FOR EACH ROW
BEGIN
  #write code that trigger After delete (hence the "ad_" prefix)
  #For table MyTable (The _MyTable_ middle)
  #On each row that gets inserted (_each suffix)
  #
  #You can see the old delete values by accesing the "old" virtual table.
  INSERT INTO log VALUES (old.id, 'MyTable', old.field1, old.field2, now());

END$$

DELIMITER ;

Ada pemicu untuk INSERT , DELETE , UPDATE
Dan mereka dapat menembakkan BEFORE atau AFTER tindakan.
Pemicu BEFORE tindakan dapat membatalkan tindakan dengan memaksa kesalahan, seperti itu.

CREATE TRIGGER bd_mytable_each BEFORE DELETE ON MyTable FOR EACH ROW
BEGIN
  #write code that trigger Before delete (hence the "db_" prefix)
  declare DoError Boolean; 

  SET DoError = 0;

  IF old.id = 1 THEN SET DoError = 1; END IF; 

  IF (DoError = 1) THEN SELECT * FROM Table_that_does_not_exist_to_force_error;
  #seriously this example is in the manual.

END$$

DELIMITER ;

Ini akan mencegah penghapusan catatan 1.

A sebelum UPDATE Trigger bahkan dapat mengubah nilai yang diperbarui.

CREATE TRIGGER bu_mytable_each BEFORE UPDATE ON MyTable FOR EACH ROW
BEGIN
  IF new.text = 'Doon sucks' THEN SET new.text = 'Doon rules';
END$$

DELIMITER ;

Semoga Anda menjadi Trigger bahagia.



  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 langkah penambahan bidang auto_increment sebesar

  2. Kesalahan koneksi PHP dengan database

  3. UPDATE jika ada yang lain INSERT di SQL

  4. Perbarui Kueri berdasarkan kondisi

  5. Bisakah Anda menggunakan nilai agregat dalam ON DUPLICATE KEY