Latest web development tutorials

operazione MySQL

MySQL operazione di elaborazione delle transazioni viene utilizzato principalmente per i grandi, ad alta complessità dei dati. Ad esempio, nel sistema di gestione del personale, si rimuove una persona, cioè, è necessario rimuovere l'ufficiale informazioni di base, e l'ufficiale anche di eliminare le informazioni correlate, come ad esempio la cassetta postale, articoli, ecc, in modo che l'istruzione operazione di database costituisce un'operazione !

  • Solo nel motore di database MySQL utilizzati database di InnoDB o un tavolo per supportare le transazioni
  • Le transazioni possono essere utilizzati per mantenere l'integrità del database per assicurare che la maggior parte delle istruzioni SQL o tutti eseguiti o meno tutto
  • gestione delle transazioni per l'inserimento, aggiornare, cancellare dichiarazione

In generale, la transazione deve soddisfare quattro condizioni (acido): Atomicità (Atomicità), Consistenza (stabilità), Isolation (isolamento), durata (affidabilità)

  • 1, transazione atomica: una serie di operazioni, o di successo, o ritirati.
  • 2. Stabilità: dati illegali (il vincolo di chiave e simili), l'operazione di ritiro.
  • 3. Isolamento: Una transazione in modo indipendente. Risultati Dopo una transazione, colpisce l'altra operazione, saranno ritirate altre transazioni. 100% di isolamento di transazione, la necessità di sacrificare la velocità.
  • 4, affidabilità: Il software e hardware crash, InnoDB dati della tabella-driven ricostruzione utilizzerà la modifica del file di registro. L'affidabilità e la velocità non può avere entrambe le cose, le opzioni innodb_flush_log_at_trx_commit quando ha deciso di salvare il log delle transazioni.

In MySQL console utilizza le transazioni per operare

1, l'inizio di una transazione

start transaction

2, fare punto di salvataggio

savepoint 保存点名称

3, l'operazione

4, può essere riportato indietro, è possibile inviare, nessun problema, sottoponiamo, ci sono problemi di rollback.

PHP esempio transazione usato

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