Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL позволява ли обратни извиквания в C, така че когато се случи промяна, мога да бъда уведомен?

Създайте тригер по този начин.

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 ;

Има тригери за INSERT , DELETE , UPDATE
И те могат да стрелят BEFORE или AFTER действието.
Задействането BEFORE действието може да отмени действието, като принуди грешка, като така.

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 ;

Това ще предотврати изтриването на запис 1.

Преди UPDATE Trigger може дори да промени актуализираните стойности.

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 ;

Надявам се, че Trigger ще бъде щастлив.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL pid приключи (не може да стартира mysql)

  2. Как да включа MySQL схема на база данни в GitHub?

  3. SQL Group By and min (MySQL)

  4. Може ли 'false' да съответства на някакъв низ в mysql?

  5. DateTimeField получи наивна дата и час