如何限制在SQL Server中的表中插入特定的行数?
我为学生开发了一个在线课程注册系统,学生可以在其中保留席位以选择课程。
每个课程都有部分,并且每个部分都具有Section
表中定义的有限座位数30/35或40。
问题是当学生同时争夺最后一个席位时,它超出了席位。因此,我在表上创建了一个触发器,以根据节表中定义的座位容量来处理行数条目。
这绝对正确。但是对于触发器,我的Web应用程序变得非常慢。我现在不需要触发器。我需要另一个重复的解决方案来处理座位数超出的问题。
您能否在不执行触发器的情况下提出一个好的解决方案?
我的表结构和触发器显示在这里:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8xckJvSy5wbmcifQ==” alt =“用于表和触发器的图像”>
使用存储过程在将数据插入索引表之前插入数据,如果行更多,则返回1为true,0返回false,并在前面给出一条消息不要引发花费更多时间执行的错误
IF (SELECT
Count(p.rows) AS [Row Count]
FROM sys.partitions p
INNER JOIN sys.indexes i ON p.object_id = i.object_id
AND p.index_id = i.index_id
WHERE i.type_desc = 'CLUSTERED'
and p.object_id = object_id('table'))>40
Begin
insert into table
select 1
end
else
select 0