sql >> Database >  >> RDS >> Mysql

Staat MySQL callbacks in C toe zodat ik een melding krijg als er een wijziging plaatsvindt?

Maak zo een trigger.

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 ;

Er zijn triggers voor INSERT , DELETE , UPDATE
En ze kunnen vuren BEFORE of AFTER de actie.
De trigger BEFORE de actie kan de actie annuleren door een fout te forceren, zoals zo.

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 ;

Dit voorkomt het verwijderen van record 1.

Een eerdere UPDATE-trigger kan zelfs de bijgewerkte waarden wijzigen.

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 ;

Ik hoop dat je Trigger blij zult zijn.



  1. Gegevensreplicatie in IRI Workbench

  2. Betere technieken voor het trimmen van voorloopnullen in SQL Server?

  3. Laravel geneste relaties

  4. Bij gebruik van Entity Framework met MySQL worden Unicode-tekens vervangen door basistekens