我很少使用存储过程,想知道将我的查询语句包装在一个事务中是否有意义。
我的存储过程有三个简单的查询语句,其中两个使用第一个查询语句的返回值。
我很少使用存储过程,想知道将我的查询语句包装在一个事务中是否有意义。
我的存储过程有三个简单的查询语句,其中两个使用第一个查询语句的返回值。
事务通常在有CREATE
、UPDATE
或DELETE
语句时使用,并且您希望拥有原子行为,也就是说,要么全部提交,要么全部不提交。
然而,您可以将事务用于READ
选择语句,以便:
确保在执行一堆查询期间没有其他人可以更新感兴趣的表。
请参阅这篇msdn文章。
大多数数据库即使没有指定,也会在事务中运行每个查询,即使它是隐式包装的。这包括选择语句。
实际上,PostgreSQL将每个SQL语句视为在事务中执行。如果您没有发出BEGIN命令,则每个单独的语句都有一个隐式的BEGIN和(如果成功)COMMIT包装。由BEGIN和COMMIT包围的一组语句有时称为事务块。
https://www.postgresql.org/docs/current/tutorial-transactions.html