如何限制在SQL Server中的表中插入特定的行数

问题描述 投票:-1回答:1

如何限制在SQL Server中的表中插入特定的行数?

我为学生开发了一个在线课程注册系统,学生可以在其中保留席位以选择课程。

每个课程都有部分,并且每个部分都具有Section表中定义的有限座位数30/35或40。

问题是当学生同时争夺最后一个席位时,它超出了席位。因此,我在表上创建了一个触发器,以根据节表中定义的座位容量来处理行数条目。

这绝对正确。但是对于触发器,我的Web应用程序变得非常慢。我现在不需要触发器。我需要另一个重复的解决方案来处理座位数超出的问题。

您能否在不执行触发器的情况下提出一个好的解决方案?

我的表结构和触发器显示在这里:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8xckJvSy5wbmcifQ==” alt =“用于表和触发器的图像”>

sql-server database-trigger
1个回答
0
投票

使用存储过程在将数据插入索引表之前插入数据,如果行更多,则返回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 
© www.soinside.com 2019 - 2024. All rights reserved.