sql-server - 如何限制在 SQL Server 中的表中插入特定行数
问题描述
如何限制在 SQL Server 的表中插入特定行数?
我为学生开发了一个在线课程注册系统,学生可以为他们选择课程预留座位。
每门课程都有部分,每个部分都有有限的座位容量 30/35 或Section
表中定义的 40。
问题是当学生同时争夺最后一个座位时,它会超出座位容量。因此,我在表上创建了一个触发器,以根据部分表中定义的座位容量来处理行数条目。
这是绝对正确的。但是对于触发器,我的 Web 应用程序变得非常慢。我现在不想要触发器。我需要另一个重复的解决方案来处理座位容量超出问题。
您能否在不实施触发器的情况下提出一个好的解决方案?
我的表结构和触发器如下所示:
解决方案
在插入数据之前使用存储过程插入数据签入索引表,如果行更多,则返回 1 为真,返回 0 为假,并在前面给出一条消息不要引发需要更多时间执行的错误
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
推荐阅读
- python - 我可以在 python 中使用 444RGB 或 555RGB 吗?
- logstash - 如何在logstash中转换格式“yyyy-MM-dd HH:mm:ss
- java - Selenium 动作多线程
- javascript - react + firebase 加载数据问题
- javascript - 如何使用 jQuery 追加数组?
- html - 如何在图标和文本之间留出更多空间?
- angular - Typescript 构造函数 - 忽略目标上不存在的字段
- c# - 使用预热 C# 的准备状态健康检查
- spring-boot - 使用自定义 UID/GID 构建 spring-boot OCI 映像
- python - 在 Python Pandas 中读取 JSON 文件