【发布时间】:2022-11-10 06:44:10
【问题描述】:
我有一个用户预订课程的数据库。
有一个表 Bookings,假设我们只想为 5 个学生提供 5 行。
当学生尝试预订课程时,我首先检查表中有多少行,如果少于 5 行,我会进行插入。
问题是,当同一时间有并发预订时,我的表中有超过 5 条记录。
在每个插入中,我首先检查行数,但是当在同一时间时,返回数是相同的并且它不会增加。
如何避免这些并发插入并将表行保持为 5。
【问题讨论】:
我有一个用户预订课程的数据库。
有一个表 Bookings,假设我们只想为 5 个学生提供 5 行。
当学生尝试预订课程时,我首先检查表中有多少行,如果少于 5 行,我会进行插入。
问题是,当同一时间有并发预订时,我的表中有超过 5 条记录。
在每个插入中,我首先检查行数,但是当在同一时间时,返回数是相同的并且它不会增加。
如何避免这些并发插入并将表行保持为 5。
【问题讨论】:
这听起来像是触发器的工作!
create trigger LimitTable
on YourTableToLimit
after insert
as
declare @tableCount int
select @tableCount = Count(*)
from YourTableToLimit
if @tableCount > 5
begin
rollback
end
go
【讨论】: