Latest web development tutorials

MySQL Transaktion

MySQL Transaktionsverarbeitungsvorgang wird hauptsächlich für große, hohe Komplexität der Daten verwendet. Zum Beispiel im Bereich Personalmanagement-System, entfernen Sie eine Person, das heißt, müssen Sie die grundlegenden Informationen Offizier zu entfernen, und der Offizier löschen auch zugehörige Informationen, wie zum Beispiel Postfach, Artikel, etc., so dass die Datenbankoperation Anweisung eine Transaktion darstellt !

  • Nur in den Motor MySQL-Datenbank verwendet InnoDB-Datenbank oder Tabellen Transaktionen zu unterstützen
  • Transaktionen können die Integrität der Datenbank zu erhalten verwendet werden, um sicherzustellen, dass der Großteil der SQL-Anweisungen entweder alle ausgeführt oder überhaupt nicht ausgeführt
  • Transaktionsmanagement für Insert, Update, Delete-Anweisung

Im Allgemeinen muss die Transaktion vier Bedingungen erfüllen (ACID): Atomicity (Unteilbarkeit), Konsistenz (Stabilität), Isolation (Isolation), Haltbarkeit (Zuverlässigkeit)

  • 1, atomare Transaktion: eine Reihe von Transaktionen oder Erfolg oder zurückgezogen.
  • 2. Stabilität: illegale Daten (der Fremdschlüssel und dergleichen), die Abhebungstransaktion.
  • 3. Isolation: Eine Transaktion unabhängig. Ergebnisse Nach einer Transaktion beeinflusst die andere Transaktion, werden andere Transaktionen zurückgezogen. 100% der Transaktionsisolation, die Notwendigkeit zu opfern Geschwindigkeit.
  • 4. Zuverlässigkeit: Nach der Software- und Hardware - Crash, InnoDB Daten tabellengesteuerte Rekonstruktion wird die Protokolldatei Modifikation verwendet werden . Zuverlässigkeit und Geschwindigkeit kann nicht beide, innodb_flush_log_at_trx_commit Optionen, wenn es beschlossen, das Transaktionsprotokoll zu speichern.

In Mysql-Konsole verwendet Transaktionen zu betreiben

1 ist der Beginn einer Transaktion

start transaction

2, tun Punkt speichern

savepoint 保存点名称

3 die Arbeits

4 kann rückgängig gemacht werden, können Sie einreichen, kein Problem, wir einreichen, gibt es Probleme zurückzunehmen.

PHP verwendet Transaktionsinstanz

<?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);
?>