道者编程

PDO事物

1:事物:在MySQL中,事务由单独单元的一个或多个SQL语句组成。在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句一旦执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事务开始以前的状态;如果单元中的所有SQL语句均执行成功,则事务被顺利执行。

2:何时使用事物:事物是为了保证数据一致性,要么一致修改,要么都不修改。比如A给B转账,A转了100,需要把A账号减少100;B账号加上100;如果A转了100,由于其他原因B并没有收到,这时候就需要把A的100返回回去。

3:PDO实现事物的两个基本条件:

(1):数据库引擎用InnoDB,注意MyISAM不支持事物

(2):关闭PDO的自动提交

4:PDO实现步骤:

(1):开启事物

(2):预处理SQL

(3):执行事物

(4):回滚 

5:举例说明:下面两个mysql语句,第二个表是不存在的,执行回滚。

<?php
try{ 
    $pdo=new pdo("mysql:host=127.0.0.1;dbname=liu","root","123",array(PDO::ATTR_AUTOCOMMIT=>0)); //关闭自动提交
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //开启异常处理
   $pdo->exec('set names utf8');  
}catch(PDOException $e){ 
     dir('数据库连接失败,错误信息:'. $e->getMessage());  
} 


  try {  
  $pdo->beginTransaction(); //开启事物
  $pdo->exec("insert into js_message (ip, dates, count) values ('126.0.0.1', '123456', 253)");
  $pdo->exec("insert into d (id, amount, changedate) values (23, 50000, NOW())"); // 表不存在,报错
  $pdo->commit(); //提交事务
  
} catch (Exception $e) {
  $pdo->rollBack(); //回滚
  echo "Failed: " . $e->getMessage();
}
 

MyIASM和Innodb区别

1、MyIASM是非事务安全的,而InnoDB是事务安全的

2、MyIASM锁的粒度是表级的,而InnoDB支持行级锁

3、MyIASM支持全文类型索引,而InnoDB不支持全文索引

4、MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM

5、MyIASM表保存成文件形式,跨平台使用更加方便



最新评论:
1楼 System Error 发表于 2018-04-10 06:08:14
6666666666
共有 1 条记录  首页 上一页 下一页 尾页 1
我要评论:

看不清楚