gpt4 book ai didi

sql - 事务内部的 SELECT 语句与事务外部的 SELECT 语句之间有区别吗?

转载 作者:行者123 更新时间:2023-12-01 18:34:31 25 4
gpt4 key购买 nike

默认的READ COMMITTED隔离级别是否以某种方式使SELECT语句在事务内部的行为与事务不同不在交易中的一个?

我正在使用MS SQL .

最佳答案

是的,事务中的人可以看到该事务中其他先前的插入/更新/删除语句所做的更改;事务之外的 Select 语句不能。

如果您所询问的只是隔离级别的作用,那么请了解所有 Select 语句(嘿,任何类型的所有语句)- 在事务中。显式存在于事务中的事务和独立事务之间的唯一区别在于,独立事务在执行事务之前立即启动事务,并在执行后立即提交或回滚;

而事务中显式的语句可以(因为它具有 Begin Transaction 语句)可以在同一事务中包含其他语句(插入/更新/删除等),或者在该事务之前或在 Select 语句之后。

因此,无论隔离级别设置为何,两个选择(显式事务内部或外部)都将位于在该隔离级别下操作的事务中。

添加:以下是针对 SQL Server 的,但所有数据库必须以相同的方式工作。在 SQL Server 中,查询处理器始终处于 3 种事务模式之一:自动提交隐式显式

  • AutoCommit是SQL Server数据库引擎的默认事务管理模式。 .. 每个 Transact-SQL 语句在完成时都会提交或回滚。 ... 如果一条语句成功完成,则它被提交;如果遇到任何错误,则会回滚。这是默认值,也是评论中 @Alex 问题的答案。

  • Implicit Transaction模式,“... SQL Server 数据库引擎在当前事务提交或回滚后自动启动一个新事务。您无需执行任何操作来描述事务的开始;您只需提交或回滚每个事务。隐式事务模式生成连续的事务链。...”请注意,斜体代码片段针对每个事务,无论是单语句事务还是多语句事务。

  • 引擎位于 Explicit Transaction当您使用 BEGIN TRANSACTION 语句显式发起事务时的模式。然后,每个语句都会在该事务中执行,直到您显式终止事务(使用 COMMIT 或 ROLLBACK),或者发生导致引擎终止并回滚的故障。

关于sql - 事务内部的 SELECT 语句与事务外部的 SELECT 语句之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1976686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com