gpt4 book ai didi

sql - 在 MS SQL Server 中,有没有办法增加 "atomically"用作计数器的列?

转载 作者:行者123 更新时间:2023-12-01 19:01:09 26 4
gpt4 key购买 nike

假设读取提交快照事务隔离设置,以下语句是否是“原子”的,即您永远不会“丢失”并发增量?

update mytable set counter = counter + 1

我认为在一般情况下,如果此更新语句是较大事务的一部分,则事实并非如此。例如,我认为这种情况是可能的:

  • 更新事务 #1 中的计数器
  • 做一些其他事情在事务 #1 中
  • 更新计数器交易#2
  • 提交交易#2
  • 提交事务#1

在这种情况下,计数器不是只会增加 1 吗?如果这是事务中唯一的语句,会有什么不同吗?

像 stackoverflow 这样的网站如何为其问题查看计数器处理此问题?或者“失去”一些增量的可能性是否被认为是可以接受的?

最佳答案

根据MSSQL帮助,你可以这样做:

UPDATE tablename SET counterfield = counterfield + 1 OUTPUT INSERTED.counterfield

这会将字段更新 1,并以 SQL 记录集的形式返回更新后的值。

关于sql - 在 MS SQL Server 中,有没有办法增加 "atomically"用作计数器的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/193257/

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