在INSERT之前检查两个不同表中的两个值的总和

时间:2017-09-15 16:54:35

标签: sql-server tsql

我有图片中的表格,我想要做的是确保学生每学年不能学习超过45分的课程。

因此,我希望每次在Studies表格中插入某些内容时进行检查,以便学生在StudiesHasStudied合计的总分数不会超过45分一年之内。

因此,如果学生在StudiesHasStudied中合并了40分,则在Studies表格中为该学生插入一个新行,这将导致他们获得45分以上是可能的。

不确定我是怎么做的。

How my tables look now

修改

由于我的讲师没有提及数据库性能等,所以我做了以下几点。

我正常执行INSERT但是在插入完成之后,我创建一个DELETE,其条件是检查得分不等于或高于45.我还希望它在删除经过说明时打印一条消息“学生不能学习超过45分)

我有以下代码,但它删除了Studies表中的所有行,而不仅仅是sPoints大于或等于45的行

DELETE FROM Studies 
WHERE EXISTS (SELECT stID, SUM(sPoints) totalpoint
FROM (SELECT stID, sPoints 
        FROM Studies
        UNION ALL
        SELECT stID, sPoints 
        FROM HasStudied) derp
GROUP BY stID
HAVING SUM(sPoints) >= 45)

1 个答案:

答案 0 :(得分:1)

如何检查两个表中的值,您可以使用trigger检查

或者您可以使用UDF

进行更复杂的检查