Mysql
 sql >> Database >  >> RDS >> Mysql

Usi creativi per il motore del buco nero

Trovato uno usando un trigger:

Se hai una serie complicata di inserimenti o aggiornamenti che devono essere eseguiti in una transazione, puoi farlo nel codice dell'applicazione oppure

Puoi creare un "grande" blackhole tabella con righe sufficienti per contenere tutti i valori.

E crea un trigger come:

DELIMITER $$

CREATE TRIGGER ai_bh_table_each AFTER INSERT ON bh_table FOR EACH ROW
BEGIN
  DECLARE lastid1 integer;

  INSERT INTO table1 VALUES (null, new.field1, new.field2);
  SELECT LAST_INSERT_ID() INTO lastid1;
  INSERT INTO table2 VALUES (null, new.field3, lastid1);
  ....  
END$$

DELIMITER ;

Se includi il codice di controllo degli errori puoi persino simulare transazioni su motori che non lo supportano, come MyISAM.