我的数据库中有两个表BrokerInfo和BrokerBank。如果数据保存在BrokerInfo中,那么它将启动进程以在BrokerBank表中保存数据。如果它无法在表2中保存数据,那么它应该从数据库中的表1中删除数据。我在数据库中从table1中删除数据时遇到问题,我该怎么办? 这是我添加操作的代码:
public function add() {
if ($this->request->is('post'))
{
$this->BrokerInfo->create();
$this->BrokerInfo->save($this->request->data);
$id=$this->BrokerInfo->getLastInsertId();
$this->BrokerBank->begin();
$this->BrokerBank->create();
$this->request->data['BrokerBank']['broker_info_id'] = $id;
if($this->BrokerBank->save($this->request->data))
{
$this->BrokerInfo->commit();
$this->redirect(array('action' => 'index'));
}
else
{
$this->BrokerInfo->rollback();
$this->Session->setFlash(__('The information could not be saved. Please, try again.'));
}
}
}
答案 0 :(得分:1)
开始交易
$this->BrokerBank->begin();
在你做任何事之前。如果保存失败,则所有内容都会自动撤消。目前,在开始事务之前,您将对table1进行保存。这意味着它不会在回滚中恢复。