当前位置: 首页 > 面试题库 >

在SQL中安全地更新计数(字段)

梁宪
2023-03-14
问题内容

我想在userpost上实现SO类标签。我有一个名为tag_data的表,其中的列为idId,title,count。我有一个单独的表,该表链接了帖子与其可能使用的许多标签之间的关系。

继承人的问题,我如何获得当前计数,将其增加或减少一并安全地存储它。因此,在我选择和更新之间,没有其他连接/线程会更新它吗?


问题答案:

我假设您还想要新的计数,否则,这毫无疑问,只需更新set count = count + 1。

如果您的数据库支持UPDATE的输出子句(例如SQL Server 2K5或2K8):

UPDATE table
   SET count = count + 1
   OUTPUT inserted.count
   WHERE id=@id;

否则:

begin transaction
update table 
    set counter=counter+1
    where id=@id;
select counter
    from table
    where id=@id;
commit;


 类似资料:
  • 问题内容: 在C#中生成SQL查询的最安全的方法是什么,包括清除用户输入以防止注入?我正在寻找使用不需要外部库的简单解决方案。 问题答案: 使用Sql参数: http://msdn.microsoft.com/zh- cn/library/system.data.sqlclient.sqlparameter(v=vs.80).aspx 这是C#中的示例

  • 在 SQL 函数中计算字段 你可以把字符串表达式变量用于SQL 合计函数以在字段中进行值的计算。例如,可以将一个字段的值乘一系数来计算百分比 (如附加税或销售税)。 下列表提供了对 Northwind.mdb 数据库的 Orders (订单)及 Order Details (订货明细)表中字段进行计算的示例。 计算 示例 往字段中加一个数 Freight +5 从字段中减一个数 Freight -

  • 问题内容: 我在一个表中有一个XML列,如下所示: 我想像这样更新此字段: 我想通过SQL Server中的一个函数来做。 谢谢! 问题答案: 正如Mikael所述,您需要描述更新背后的逻辑。但是对于上面的预期输出,以下应该起作用:

  • 我读过这个主题:C#线程安全快速(est)计数器,并在我的并行代码中实现了这个特性。据我所知,这一切都很好,但它大大增加了处理时间,大约10%。 这让我有点担心,我认为问题在于我做了大量相对便宜的产品( 现在,我看不到解决的办法,但也许我错过了一些明显的东西。我甚至在考虑使用n个计数器(对应于并行化程度),然后在特定的核上增加每个计数器,但这似乎不可行(检测我在哪个核上可能会更昂贵,更不用说复杂的

  • 希望有人能帮助解决这个问题。最近,我们的机器更新了KB4344167,其中包括.NET 4.7.1的安全更新。不幸的是,此更新破坏了的代码。当我们运行下面的代码时,我们会得到以下错误: 请求中止:无法创建SSL/TLS安全通道。

  • 问题内容: 使用以下代码,应用程序编译后,我立即在徽章图标中得到(2): 我确实尝试了下一个变体:初始化一个新的版本,然后再更新: 但是,当我收到新通知时,它不会更新为+1。有谁知道如何解决? 问题答案: 除非实际打开应用程序,否则不会使用此方法更新徽章编号。如果要在收到通知时更新徽章编号,则需要将json推送通知的Badge属性设置为所需编号。 如果您发送的是普通消息(不使用json),则可以通