在下面的例子中,让我们假定要创建新员工的一组条目,23是这个新员工的ID。
另外还要插入该员工的基本资料,我们也需要记录他的薪水。
很简单地做两个独立的更新,调用PDO::beginTransaction() 和 PDO::commit() 将其封装,我们就可以保证没有其他人可以看见这些改变直到它们完成。
如果在这个过程中有错误发生,catch语句块回滚事务处理开始后所有的变化,并且输出一条错误信息。
<?
php
try
{
$dbh
=
new
PDO(
'
odbc:SAMPLE
'
,
'
db2inst1
'
,
'
ibmdb2
'
,
array
(PDO
::
ATTR_PERSISTENT
=>
true
));
echo
"
Connected
"
;
$dbh
->
setAttribute(PDO
::
ATTR_ERRMODE
,
PDO
::
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();
}
?>
在一个事务处理中没有对更新查询的限制,你也可以发送复杂的查询来提取数据,然后用这些信息来构件更多的更新和查询语句。
当事物处理被激活时,PDO将保证在执行过程中没有其他的人能够改变什么。
事实上,这不完全准确,但是对于第一次接触事物处理的人来说是一个好的入门介绍。