Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL có cho phép gọi lại trong C để khi thay đổi xảy ra, tôi có thể được thông báo không?

Tạo một trình kích hoạt như vậy.

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 ;

Có các trình kích hoạt cho INSERT , DELETE , UPDATE
Và họ có thể kích hoạt BEFORE hoặc AFTER hành động.
Trình kích hoạt BEFORE hành động có thể hủy bỏ hành động bằng cách bắt lỗi, như vậy.

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 ;

Điều này sẽ ngăn việc xóa bản ghi 1.

A before UPDATE Trigger thậm chí có thể thay đổi các giá trị được cập nhật.

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 ;

Hy vọng bạn sẽ được Trigger hạnh phúc.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn xóa khóa duy nhất hoặc khóa chính khỏi bảng MYsql

  2. Điều gì sẽ xảy ra nếu tôi xóa ibdata1 trong mysql (LINUX)

  3. Cách tìm các giá trị không phải dạng số trong một cột trong MySQL

  4. Xóa hàng Mysql sau thời gian được chỉ định

  5. Làm cách nào để sử dụng CẬP NHẬT KHÓA KÉP TRONG PDO với mysql?