�������Զ��ύ

����ͨ�� PDO �������ˣ��ڿ�ʼ���в�ѯǰ����������� PDO ����ι�������ġ�����֧���Ĵ����ԣ�ACID����ԭ���ԣ�Atomicity����һ���ԣ�Consistency���������ԣ�Isolation���Լ��־��ԣ�Durability����ͨ�׵ؽ�����һ��������ִ�е��κβ�������ʹ�Ƿֽ׶�ִ�еģ�Ҳ�ܱ�֤��ȫ��Ӧ�������ݿ⣬�����ύʱ�����ܵ������������ӵĸ��š��������Ҳ���Ը��������Զ����������軹û���ύ������ʹ���ڽű��д������������ס�

����ͨ����ͨ����һ������"����"����Ȼ��ʹ֮ͬʱ��Ч��ʵ�ֵģ��������ĺô��ǿ��Դ����ṩ��Щ���ĵ�Ч�ʡ����仰˵���������ʹ�ű����죬���ҿ��ܸ���׳��������Ҫ��ȷ��ʹ��������ܻ�������ĺô�����

���ҵ��ǣ�����ÿ�����ݿⶼ֧��������˵���һ�δ�����ʱ��PDO ��Ҫ����ν��"�Զ��ύ"ģʽ�����С��Զ��ύģʽ��ζ�ţ�������ݿ�֧�֣����е�ÿ����ѯ�������Լ�����ʽ����������ݿⲻ֧��������û�С������Ҫһ������������� PDO::beginTransaction() ����������������ײ�������֧���������׳�һ�� PDOException �쳣�����ܴ����������������ģ��ⶼ��һ�����صĴ���״̬����һ����ʼ�����񣬿��� PDO::commit() �� PDO::rollBack()����ɣ���ȡ���������еĴ����Ƿ����гɹ���

Warning

PDO �������������Ƿ�������������������ijЩ����ʱ������ζ�����񲻿��ã������ݿ�����������ȥ����һ������PDO::beginTransaction() ����Ȼ���� TRUE ����û�д���

������ MySQL ���ݿ�� MyISAM ���ݱ���ʹ���������һ���ܺõ����ӡ�

���ű����������Ӽ������ر�ʱ���������һ��δ��ɵ�������ô PDO ���Զ��ع����������ְ�ȫ��ʩ�������ڽű�������ֹʱ������ֲ�һ�µ����——���û����ʽ���ύ������ô������ij���ط������ˣ�����ִ�лع�����֤���ݰ�ȫ��

Warning

ֻ��ͨ�� PDO::beginTransaction() ����һ������󣬲ſ��ܷ����Զ��ع�������ֶ�����һ����ѯ�������� �� PDO �޷�֪�����Ӷ��ڱ�Ҫʱ���ܽ��лع���

Example #1 ��������ִ��������

�����������У�����Ϊ��Ա������һ����Ŀ������һ��Ϊ23��ID�����˵ǼǴ��˵Ļ�������֮�⣬����Ҫ��¼���Ĺ��ʡ��������·ֱ���������ܼ򵥣���ͨ������� PDO::beginTransaction() ��PDO::commit() �����У����Ա�֤�ڸ������֮ǰ���������޷�������Щ���ġ���������˴���catch ��ع������������������������и��ģ������һ��������Ϣ��

<?php
try {
  
$dbh = new PDO('odbc:SAMPLE''db2inst1''ibmdb2'
      array(
PDO::ATTR_PERSISTENT => true));
  echo 
"Connected\n";
} catch (
Exception $e) {
  die(
"Unable to connect: " $e->getMessage());
}

try {  
  
$dbh->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

  
$dbh->beginTransaction();
  
$dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  
$dbh->exec("insert into salarychange (id, amount, changedate) 
      values (23, 50000, NOW())"
);
  
$dbh->commit();
  
} catch (
Exception $e) {
  
$dbh->rollBack();
  echo 
"Failed: " $e->getMessage();
}
?>

�����������������и��ģ�Ҳ���Է������ӵIJ�ѯ����ȡ���ݣ�������ʹ����Щ��Ϣ����������ĸ��ĺͲ�ѯ�������񼤻�ʱ�����Ա�֤�������ڲ������е����޷��������ġ������һ���Ķ������������Ϣ���ɲο����ݿ�����ṩ���ĵ���