sql >> Base de Datos >  >> RDS >> Mysql

Usos creativos del motor de agujero negro

Encontré uno usando un disparador:

Si tiene una serie complicada de inserciones o actualizaciones que deben realizarse en una transacción, puede hacerlo en el código de la aplicación, o

Puedes crear un blackhole 'grande' tabla con suficientes filas para contener todos los valores.

Y crea un disparador como:

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 ;

Si incluye un código de verificación de errores, incluso puede simular transacciones en motores que no lo admiten, como MyISAM.