一、使用场景:
如果一个操作会改变数据库多处信息,并且这些信息是密切相关的,
为了确保每一处改动都是成功的,如果其中一处改动不成功,就将其它改动撤销,以保证数据(事务)的完整性。
比如:你给我转账10000块,需要把你的余额减10000,我的加10000,如果万一我的余额写入失败,那么理应你的余额不变,
不然这10000就蒸发了~~
二、简明实例:
需要数据库引擎支持事务处理。
比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。
实例:
try {
Db::startTrans();
//将数据1存入表1,并获取ID:
$re['t1'] = Db::name('table1')
->insertGetId([
'content1' => $content1
]);
//将数据2写入表2
$re['t2'] = Db::name('table2')
->insert([
'id' => $re['t1']