Latest web development tutorials

operação MySQL

operação de processamento de transações MySQL é usado principalmente para a grande alta complexidade dos dados,. Por exemplo, no sistema de gestão de pessoal, você remover uma pessoa, que é, o que você precisa para remover o oficial de informação básica, e o oficial também eliminar informações relacionadas, tais como caixa postal, artigos, etc., de modo que a declaração operação de banco de dados constitui uma operação !

  • Somente no motor de banco de dados MySQL usado banco de dados InnoDB ou mesa para suportar transações
  • As transações podem ser usados ​​para manter a integridade do banco de dados, garantir instruções SQL em lote quer todos executados ou não executados todos
  • gerenciamento de transações para insert, update, delete

Geralmente, a operação deve cumprir quatro condições (ácido): Atomicidade (Atomicity), consistência (estabilidade), isolamento (isolamento), Durabilidade (confiabilidade)

  • 1, transação atômica: um conjunto de operações, ou o sucesso, ou retirada.
  • 2. Estabilidade: dados ilegais (a restrição chave estrangeira e semelhantes), a operação de retirada.
  • 3. Isolamento: Uma operação independente. Resultados Após a transação, não afeta a outra transação, outras operações serão retirados. 100% do isolamento transacção, a necessidade de sacrificar a velocidade.
  • 4. Confiabilidade: Após falha de software e hardware, InnoDB dados Reconstrução baseada em tabelas usará a modificação do arquivo de log. Confiabilidade e velocidade não pode ter ambos, opções innodb_flush_log_at_trx_commit quando decidiu salvar o registro da transação.

No MySQL console usa transações para operar

1, o início de uma transacção

start transaction

2, do ponto de salvaguarda

savepoint 保存点名称

3, a operação

4, pode ser rolada para trás, você pode enviar, não há problema, nós nos submetemos, há problemas reversão.

PHP instância de transação usado

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