我需要将数据插入到同一数据库中的两个单独的表中。我目前对每个插入使用单独的查询/事务,但我最近了解到我可以将两个插入合并到一个事务中。
将它们合并到一个事务中,而不是将它们作为单独的事务保留,有什么区别?
发布于 2012-07-12 20:26:04
如果数据是相关的,这意味着第二个sql存储的数据与第一个查询存储的数据以某种方式链接在一起,或者反之亦然,那么您应该考虑创建一个transaction。通过这种方式,如果其中一个查询遇到问题,您可以使用rollback。您可以在try-catch语句中实现这一点。如果查询彼此完全不相关,则可以使用两个单独的SQL语句。
但是,我认为,由于两个表的数据是相同的,所以最好进行事务处理。因此,如果您将来必须进行连接、删除等操作,那么您仍然拥有一个一致的数据库。
发布于 2012-07-12 20:21:51
事务为您提供了回滚sql语句的工具。例如,您有两个表table1和table2,您只想在table2中正确插入数据时才在table1中插入数据,如果在table1中插入数据时出现错误,则不会在table2中插入数据,在这种情况下,您将使用transaction。
事务的四个基本功能:
Atomicity:当事务中涉及两个或多个信息时,或者所有的state.Isolation:都被提交,或者在事务结束时没有一个是commited.Consistency:的,要么存在新的有效数据形式,要么在事务期间(在提交或回滚之前)将数据返回到其原始state.Isolation:。事务提交后,数据必须保持隔离状态,其他transactions.Durability:无法访问。即使服务器出现故障或重新启动,数据的最终状态也仍然可用。发布于 2012-07-12 20:20:21
一件事与另一件事无关。
将它们放在同一事务中的意义在于两者都发生或都不发生。
如果您的第一次插入成功,第二次插入失败,那么您需要问的问题是什么,然后回答。
就我个人而言,由于我在某些操作中同时执行两个插入操作,因此即使第二个事务失败的后果在其他地方处理,单个事务也是有意义的。
https://stackoverflow.com/questions/11451612
复制相似问题