我需要将数据插入到同一数据库中的两个不同表中。目前,我使用单独的查询/事务来进行每个插入,但最近我了解到可以将这两个插入组合成一个单独的事务。
将它们组合成一个事务与保持它们为单独的事务有什么区别?
我需要将数据插入到同一数据库中的两个不同表中。目前,我使用单独的查询/事务来进行每个插入,但最近我了解到可以将这两个插入组合成一个单独的事务。
将它们组合成一个事务与保持它们为单独的事务有什么区别?
事务提供了回滚 SQL 语句的功能。例如,你有两个表 table1 和 table2,只有在将数据正确插入 table1 后才想要将其插入 table2。如果向 table1 插入数据时出现错误,则不会将数据插入 table2。在这种情况下,你需要使用事务。
事务的四个基本函数:
原子性:
当一个事务涉及到两个或多个数据对象时,所有的数据操作要么全部提交成功,要么全部失败回滚。一致性:
事务执行结束后,数据要么被更新为一个新的有效状态,要么回滚到原始状态。隔离性:
在一个事务中,在提交或回滚之前,所访问的数据必须得到隔离并且不能被其他事务访问。持久性:
在事务提交后,即使服务器崩溃或重启,数据的最终状态仍然可用。transaction
。这样一来,如果其中一个查询遇到问题,你可以进行 rollback
。你可以在 try-catch
语句中实现此功能。如果两个查询完全没有关联,则可以使用两个独立的 SQL 语句。一件事情与另一件事情没有任何关系。
将它们放在同一个事务中的意义在于,两者要么同时发生,要么都不发生。
如果您的第一个插入成功而第二个插入失败,那么您会陷入什么境地是您需要问自己并回答的问题。
就我个人而言,既然我在某个操作中执行了这两个插入操作,即使第二个插入操作失败的后果在其他地方得到处理,单个事务也是有意义的。