标签:
MySQL 支持多种存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、NDB 等。
在 5.5.8 版本之前默认引擎为 MyISAM,之后的默认引擎为 InnoDB。
//查看当前的存储引擎
SHOW VARIABLES LIKE ‘%storage_engine%‘;
//查看所有存储引擎
SHOW ENGINES;
MyISAM 和 InnoDB 是目前用的最多的存储引擎,在 5.5 之前 MySQL 默认是 MyISAM,
而之后则是 InnoDB,这个意图非常明显,在未来 InnoDB 的优势将越来越大。
MyISAM 表在磁盘上存储成 3 个文件,其文件名都和表名相同,扩展名分别为:
.frm(存储表结构定义);
.MYD(MYData,存储数据);
.MYI(MYIndex,存储索引)。
InnoDB 表在磁盘上存储成 3 个文件,其文件名都和表名相同,扩展名分别为:
.frm(存储表结构定义);
.ibd(存储数据和索引文件)。
ibdata1(共享数据文件)。
InnoDB支持事务
事务(transaction)是作为整个一个单元的一组有序的数据库操作。如果一组中的所有操
作都成功,则认为事务成功,即使只有一个失败操作,事务也不成功。如果所有操作成功完
成,事务则提交(commit),其修改将作用于所有其他数据库进程。如果一个操作失败,则事
务将回滚(roll back),该事务所有操作的影响都将取消。
首先,您的MySQL是InnoDB或BDB引擎的一种,一般来说,你安装了AppServ的集成
包, 你选择InnoDB的引擎的数据库即可。 如果你建立的表不是InnoDB, 可以在phpmyadmin
里修改。
//首先你必须关闭自动提交数据
$_mysqli->autocommit(false);
//创建一个SQL语句,必须同时运行成功,不能出现一个成功,一个失败
$_sql .= "UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;";
$_sql .= "UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;";
//执行两条SQL语句
if ($_mysqli->multi_query($_sql)) {
//获取第一条SQL一影响的行数
$_success = $_mysqli->affected_rows == 1 ? true : false;
//下移,第二条SQL
$_mysqli->next_result();
//获取第二条SQL影响的行数
$_success2 = $_mysqli->affected_rows == 1 ? true : false;
//判断是否都正常通过了,两个SQL
if ($_success && $_success2) {
$_mysqli->commit();
echo ‘完美提交!‘;
} else {
$_mysqli->rollback();
echo ‘程序出现异常!‘;
}
} else {
echo "SQL语句有误:".$_mysqli->errno.$_mysqli->error;
}
//最后还必须开启自动提交
$_mysqli->autocommit(true);
标签:
原文地址:http://www.cnblogs.com/yesterday679/p/4441789.html