Latest web development tutorials

Transakcja MySQL

MySQL operacji przetwarzania transakcyjnego jest używany głównie do dużych, wysokiej złożoności danych. Na przykład, w systemie zarządzania personelem, usunąć osobę, to znaczy, że trzeba usunąć podstawową oficera informacyjnego, a oficer także usunąć powiązane informacje, takie jak skrzynki, artykuły itp, tak że zestawienie operacji na bazie danych stanowi transakcję !

  • Tylko w silniku bazy danych MySQL InnoDB bazy danych wykorzystywane lub stolik do obsługi transakcji
  • Transakcje mogą być stosowane w celu utrzymania integralności bazy danych w celu zapewnienia, że ​​większość z tych zapytań SQL albo wszystkie wykonane lub nie zrealizowała
  • zarządzanie transakcjami dla INSERT, UPDATE, DELETE

Generalnie, transakcja musi spełniać cztery warunki (kwas): Atomowość (niepodzielność), Spójność (stabilność), Isolation (izolacja), trwałość (niezawodność)

  • 1, transakcji atomowej: zestaw operacji, albo sukces albo wycofane.
  • 2. Stabilność: nielegalni danych (ograniczenie klucza obcego i tym podobne), transakcja wycofania.
  • 3. Izolacja: Transakcja niezależnie. Wyniki Po transakcji, wpływa na inną transakcję, inne transakcje zostaną wycofane. 100% izolacji transakcji, trzeba poświęcić prędkości.
  • 4. Wiarygodność: Po awarii oprogramowania i sprzętu, danych InnoDB tabeli napędzane Rekonstrukcja użyje modyfikacji pliku dziennika. Niezawodność i szybkość nie może mieć zarówno opcje innodb_flush_log_at_trx_commit kiedy postanowił zapisać dziennik transakcji.

W MySQL używa konsoli do obsługi transakcji

1, na początku transakcji

start transaction

2, należy zapisać punkt

savepoint 保存点名称

3, operacja

4, może zostać wycofana, można złożyć, nie ma problemu, możemy przedstawić istnieją problemy wycofać.

PHP używane wystąpienie transakcji

<?php
$handler=mysql_connect("localhost","root","password");
mysql_select_db("task");
mysql_query("SET AUTOCOMMIT=0");//设置为不自动提交,因为MYSQL默认立即执行
mysql_query("BEGIN");//开始事务定义
if(!mysql_query("insert into trans (id) values('2')"))
{
mysql_query("ROLLBACK");//判断当执行失败时回滚
}
if(!mysql_query("insert into trans (id) values('4')"))
{
mysql_query("ROLLBACK");//判断执行失败回滚
}
mysql_query("COMMIT");//执行事务
mysql_close($handler);
?>