gpt4 book ai didi

sql-server-2005 - 事务是否影响所有查询?

转载 作者:行者123 更新时间:2023-12-04 23:10:45 24 4
gpt4 key购买 nike

我使用 BEGIN TRANSACTION 开始了交易在 Management Studio 中,但我忘记了 ROLLBACK 或 COMMIT 大约 10 分钟。我吓坏了,回去回滚我的更改。这是否回滚了在那段时间内通过服务器或仅通过我的用户/连接的所有查询?

最佳答案

只是你的连接:-)

(编辑:而是你的交易,因为 BEGIN TRANSACTION。如果你在同一个 session 中的 BEGIN TRANSACTION 之前做了更新,它们当然不会被回滚)

但是:根据正在使用的锁类型和查询提示,它可能会给其他 session 的 SELECT 提供错误的答案......

一个例子:

在一个 SQL Studio session 中,执行以下操作:

CREATE TABLE a(a INT)

INSERT INTO a VALUES(1)

BEGIN TRANSACTION

UPDATE a
SET a = 2

SELECT *, @@TRANCOUNT
FROM a

-> 你会看到 '2, 1' 结果

打开一个新 session (Sql studio 中的选项卡)

做:
SELECT *, @@TRANCOUNT
FROM a (NOLOCK)

你会看到'2, 0'

现在,在第一次 session 中,做
ROLLBACK TRANSACTION

SELECT *, @@TRANCOUNT
FROM a

-> 事务回滚,你会看到 '1, 0'

-> 在第二个 session 中选择也将显示 '1, 0'

所以:如果你使用 (NOLOCK) 提示,你可以获得未提交的数据作为结果 -> 这可能会导致非常意想不到的效果:-)

不要忘记:
DROP TABLE a

当你完成时;)

关于sql-server-2005 - 事务是否影响所有查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1478653/

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