在 ZF2 中,我有一个映射器,可将数据保存到 3 个表中。表 1 只有 id
,表 2 和表 3 有 id
和更多数据。这些表格依次填写:首先是表 1,然后是表 2,然后是表 3。
假设有一些东西阻止保存到第三个表(例如,唯一约束失败)。因为表是依次填充的,所以表 1 和 2 被填充,但表 3 没有被填充。所以我留下了表 1 和表 2 中未使用的数据。
如果出现数据库错误,如何删除表 1 和表 2 中创建的值,并在第三个表中显示错误消息?
最佳答案
找到了答案。
https://stackoverflow.com/a/13862746/4685379
但是,这个答案没有指定如何实现对多个表的插入。关键是将所有插入放在 beginTransaction()
和 commit()
方法之间,如下所示:
try {
$this->getAdapter()->getDriver()->getConnection()->beginTransaction();
// your inserts go here
$this->getAdapter()->getDriver()->getConnection()->commit();
} catch (\Exception $e) {
$this->getAdapter()->getDriver()->getConnection()->rollback();
throw $e;
}
然后 rollback()
进入 catch
block 。
关于php - ZF2保存到多个表,(1)如果数据库错误则回滚更改(2)显示数据库错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850625/