【问题标题】:How to prevent concurrent inserts in table如何防止表中的并发插入
【发布时间】:2022-11-10 06:44:10
【问题描述】:

我有一个用户预订课程的数据库。

有一个表 Bookings,假设我们只想为 5 个学生提供 5 行。

当学生尝试预订课程时,我首先检查表中有多少行,如果少于 5 行,我会进行插入。

问题是,当同一时间有并发预订时,我的表中有超过 5 条记录。

在每个插入中,我首先检查行数,但是当在同一时间时,返回数是相同的并且它不会增加。

如何避免这些并发插入并将表行保持为 5。

【问题讨论】:

    标签: sql database


    【解决方案1】:

    这听起来像是触发器的工作!

    create trigger LimitTable
    on YourTableToLimit
    after insert
    as
        declare @tableCount int
        select @tableCount = Count(*)
        from YourTableToLimit
    
        if @tableCount > 5
        begin
            rollback
        end
    go
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      相关资源
      最近更新 更多