深入分析MySQL事务处理和表锁定

深入分析MySQL事务处理和表锁定
MySQL中有两种主要的事务处理方法。
1。用开始、回滚、提交实现它
开始事务
回滚事务回滚
提交交易验证
2,直接更改MySQL的自动提交模式
MySQL是默认自动提交的,也就是说,如果提交查询,它将直接执行!我们可以通过
设置自动提交= 0禁止自动提交
设置自动提交= 1打开自动提交
实现事务处理。
当你使用自动提交= 0,所有你以后的SQL会事务处理直到你使用提交确认或结束与回滚。
请注意,当结束此事务时,还将打开一个新事务!根据第一种方法,只有当前的方法用作事务!
个人推荐第一种方法!

只有InnoDB和BDB型数据表在MySQL支持事务处理是可用的!不支持其他类型!
*:对于一般的MySQL数据库默认的搜索引擎是MyISAM,这个引擎不支持事务!如果您希望MySQL支持事务,您可以自己手动修改它:
方法如下:
1。修改C: APPSERV MySQL my.ini文件,找到跳过InnoDB,在前面加#,保存文件后。
2。在运行中输入:services.msc,重启mysql服务。
三.在phpMyAdmin,MySQL ->显示发动机;(或执行MySQL ->显示变量like'have_ %;),看到InnoDB为是的,这意味着数据库支持InnoDB。
它还解释了事务事务的支持。
4。创建一个表时,您可以选择存储引擎InnoDB引擎。如果是以前创建的表,你可以使用MySQL ->修改表table_name InnoDB类型=;
或MySQL ->修改表table_name InnoDB引擎=;改变数据表的引擎支持事务。
下面是测试的示例代码
复制代码代码如下所示:
mysql_query(开始);/ /或mysql_query(开始交易);
/ /如果不使用事务,SQL成功美元美元,SQL1执行失败
为SQL =插入测试值(会',以');
为SQL1 =插入测试值(会',以','444 ');
RES = mysql_query美元($ SQL);
mysql_query RES1 =美元($ SQL1);
由于事务的使用,这两个插入失败了
如果($ RES $ RES1){
mysql_query(提交);
}
别的{
mysql_query(回滚);
}
mysql_query();
mysql_query(设置自动提交= 0 / /套);MySQL不会自动提交,需要使用COMMIT语句提交
为SQL =插入测试值(会',以');
为SQL1 =插入测试值(会',以','444 ');
RES = mysql_query美元($ SQL);
mysql_query RES1 =美元($ SQL1);
由于使用的东西,这两个插入失败
如果($ RES $ RES1){
mysql_query(提交);
}
别的{
mysql_query(回滚);
}
mysql_query();

对于MyISAM引擎数据库不支持事务,一个方法可以使用表锁定:
代码如下:
复制代码代码如下所示:
/ / MyISAM InnoDB支持,
/ /注:查询语句不能写在一起,如:mysql_query(选择*从;SELECT * FROM B;);
sql_1美元=锁表写入测试;
mysql_query($ sql_1);
sql_2美元=插入测试值('。$ A. ,。美元);
如果(mysql_query($ sql_2)){
echo'successful!;
其他{ }
echo'unsuccessful!;
}
sql_3美元=打开表;
mysql_query($ sql_3);

tag:锁定事务处理电脑软件mysql

相关内容