我正在与老板讨论一项职能。我希望得到观众的意见,以便我可以将其呈现给他。
我接手的一个项目,有一个在数据库中创建记录的功能。然而,该父记录在各个表中都有许多子记录。这是代码的流程:
没有外键,链接到父级的字段可以为空。
我们遇到的问题是,验证不彻底,所以应该失败的时候验证可能会通过。创建了子记录,但父记录由于超出数据长度而出现数据库错误。我们修复了验证,但网站的其他方面失败了,我们不得不回滚更改。
开始交易。
插入子行。
尝试插入父行。
如果其中任何一个失败,则回滚事务。
如果全部成功,则提交事务。
显然,所有表必须使用相同类型的支持事务的存储引擎来定义。例如。 InnoDB,这是默认的存储引擎。