$Field->D('Field');
$Field->startTrans(); // 事务开始
//记录字段信息
$add = $Field->create($field);
if($add){
$Field->add();
}else{
return array('status'=>false,'info'=>$Field->getError());
}
//创建数据表字段
$createCol = $Field->addColumn($tblname,$field['field'],$field['type']);
if (false === $createCol){
//字段添加失败回滚
$Field->rollback();//事务回滚 删除记录的字段信息
return array('status'=>false,'info'=>'创建字段失败!');
}
//字段添加成功 提交事务
$Field->commit();操作中 addColumn 使用 $this->execute($sql) 来实现数据表字段的添加按理来说$Field->add();这个添加字段信息 应该是在$Field->commit();的时候才执行
但是发现如果添加的字段已存在
$Field->addColumn执行后数据就add成功了
而且 $Field->rollback(); 也不会删除删除刚才add的数据
第一次接触事务这个东西 不是很明白 希望大家能够指导下
最佳答案