Latest web development tutorials

сделка MySQL

операция обработки транзакций MySQL используется в основном для большой, высокой сложности данных. Например, в системе управления персоналом, вы удалить человека, то есть, вам нужно удалить основной информации офицера, а офицер также удалить соответствующую информацию, например, почтовый ящик, статьи и т.д., так что заявление операция базы данных представляет собой транзакцию !

  • Только в двигателе базы данных MySQL используется Innodb базы данных или таблицы для поддержки операций
  • Сделки могут быть использованы для поддержания целостности базы данных, чтобы гарантировать, что основная часть заявлений SQL либо все выполняются или не выполняются все
  • Управление транзакциями для вставки, обновления, удаления заявление

Как правило, сделка должна соответствовать четырем условиям (ACID): Атомарность (атомарность), последовательность (устойчивость), изоляция (изоляция), долговечность (надежность)

  • 1, атомная сделка: множество сделок, или успех, или отозвано.
  • 2. Стабильность: незаконные данные (ограничение внешнего ключа и т.п.), то сделка вывод.
  • 3. Изоляция: Сделка независимо друг от друга. Результаты После сделки, влияет на другие сделки, другие сделки будут сняты. 100% от изоляции транзакций, необходимость жертвовать скоростью.
  • 4. Надежность: После того, как программного и аппаратного сбоя, InnoDB данные таблицы управляемой реконструкции будет использовать модификацию файла журнала. Надежность и скорость не может иметь как варианты innodb_flush_log_at_trx_commit, когда она решила сохранить журнал транзакций.

В Mysql консоли использует транзакции для работы

1, начало операции

start transaction

2, сделать точку сохранения

savepoint 保存点名称

3, операция

4, не может быть произведен откат, вы можете представить, никаких проблем, мы представляем, есть проблемы откатить.

PHP используется экземпляр транзакции

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