gpt4 book ai didi

sql-server-2008 - SQL 在没有提交的情况下开始事务

转载 作者:行者123 更新时间:2023-12-05 02:24:55 25 4
gpt4 key购买 nike

如果我开始一个事务,但从未调用 COMMIT。数据会怎样?我有一个很小的数据库(比如一百万个左右的 SKU)。我将它导出为 1024 的小偶数 block 。(第三方限制限制了我的文件大小)。
我必须标记已导出的记录..

例如。更新产品集 exported = 1 where sku = '1234';

现在我时不时遇到第三方文件写入工具崩溃的问题。但这发生在给定记录的文件创建之前。

所以我在想,如果我在更新记录之前调用 begin transaction,并且只有在我确认文件已构建后才提交。

这可能会导致一些开始交易没有他们的双胞胎。

那么两个问题..有没有更好的方法? (除了摆脱有问题的第三方)或者作为从未提交的事务的一部分的记录会发生什么情况?

最佳答案

您的交易在连接完全关闭(不只是返回连接池)之前一直保持打开状态并带有锁。这不好

要在没有显式事务的情况下执行更新并管理 1024 行 block ,请执行以下操作

UPDATE TOP (1024)
Products
SET
exported = 1
OUTPUT
INSERTED.*
WHERE
exported = 0;

您可以修改它以使用具有“正在处理”、“已导出”等状态列,这样您就可以知道什么时候内容被读取但未导出

关于sql-server-2008 - SQL 在没有提交的情况下开始事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7157260/

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