创建数据库:create database LockTest;
创建数据表:create table `test` (`id`not null primary key,`name` varchar(5))engine=InnoDB;
创建用户:grant select,insert,update,delete,index,alter,create,drop on LockTest.* to ly identified by '123456';
插入数据:insert `test` values ('1','ac');
显示autocommit的值:
show variables like 'autocommit';
LIKE 'autocommit';事务操作:begin;
InnoDB存储引擎支持事务;
set autocommit=0关闭自动提交;
当下发commit命令时,才提交事务;
set autocommit=1开启自动提交,需要使用start transaciton来标识一个事务的开始;
start transaction;
insert into test values ('2','ab');//此时用select语句能查询到这条数据
insert into test values ('3','ii');
commit;
事务在PHP中应用举例:
<?php
$db = mysql_connect('localhost','ly','123456') or die('链接失败');//链接数据库
mysql_select_db('LockTest');//选择数据库
mysql_query("set autocommit = 0");//设置mysql不自动提交
mysql_query("begin");//设置事务的开始
//插入数据
$sql = "INSERT INTO `test` VALUES ('4','1s')";
$sql2 = "INSERT INTO `test` VALUES ('5','1ll')";
$q = mysql_query($sql);
$q2 = mysql_query($sql2);
if(!$q && !q2){
mysql_query("rollback");//执行回滚
echo '执行失败,数据回滚';exit;
}
mysql_query("COMMIT");//提交事务
echo "成功";
mysql_close($db);
?>