2012年11月29日 星期四

[mysql][transaction交易] 簡單介紹

transaction(交易):就是當有兩段要執行的SQL語法,希望要嘛就兩個SQL語句都執行成功,如果其中一行出現錯誤就恢復原始資料,這時候就要使用transaction。



官方:
儲存引擎說明
MyISAMDefault engine as of MySQL 3.23 with great performance
MEMORYHash based, stored in memory, useful for temporary tables
InnoDBSupports transactions, row-level locking, and foreign keys
BerkeleyDBSupports transactions and page-level locking
BLACKHOLE/dev/null storage engine (anything you write to it disappears)
EXAMPLEExample storage engine
ARCHIVEArchive storage engine
CSVCSV storage engine
ndbclusterClustered, fault-tolerant, memory-based tables
FEDERATEDFederated MySQL storage engine
MRG_MYISAMCollection of identical MyISAM tables
ISAMObsolete storage engine


由表看出MyISAM沒有支援Transaction(交易),所以即使PDO的交易函數也沒辦法使用
MYSQL引擎要換成InnoDB才行

try{
$dbh->beginTransaction();
$sth $dbh->exec("DROP TABLE fruit");
$sth $dbh->exec("UPDATE dessert SET name = 'hamburger'");
$dbh->commit();
}catch(Exception $e){
$dbh->rollBack();
$e->getMessage();
}

沒有留言:

張貼留言