mysql对事务的支持

 起因:因为只是需要编写一个接口,无需使用框架,但是又要求对数据库的操作支持事务,所以直接使用mysql自带的事务进行处理

 mysql自带对事务的支持,但是他默认是关闭的,需要我们手动打开,打开mysql的事务支持,只需要一下几步:

第一步,mysql表格类型默认是MyISAM,这个类型是不支持事务的,我们需要将他改成INNODB,语句如下:

  

ALTER TABLE `表名` ENGINE = INNODB; 
--ENGINE 可以用type代替
-- 创建表时指定表类型的方法
CREATE TABLE `表名` (
`id` int(11) NOT NULL auto_increment,
`tel` varchar(11) default NULL,
) ENGINE=MYISAM;
--也可以在建表时直接指定表类

第二步,打开事务

 

 $db->query('begin'); // $db需要事先创建,我就不写

接着,我们找之前的平常的方式修改表中的结果,我们会发现,我们的sql虽然执行成功了,但是mysql表中的数据并没有改变,这是因为,我们还没有提交事务

 第三步,提交事务

if($res){ // $res 为前面sql语句返回的执行结果
  $db->query("COMMIT");
  // 提交事务
}else{
  $db->query("ROLLBACK")
 // 数据回滚
}
$db
->query("END");
//   结束事务操作

执行完这条语句后,我们再去查看表结构,如果sql语句没问题的话,表中的数据已经改变了,如果sql有问题,我们会发现不仅sql错误的那条语句没执行成功,sql正确的语句也没有执行成功,这就是mysql的事务了

原文地址:https://www.cnblogs.com/dtj007/p/5336692.html