我有图片中的表格,我想要做的是确保学生每学年不能学习超过45分的课程。
因此,我希望每次在Studies
表格中插入某些内容时进行检查,以便学生在Studies
和HasStudied
合计的总分数不会超过45分一年之内。
因此,如果学生在Studies
和HasStudied
中合并了40分,则在Studies
表格中为该学生插入一个新行,这将导致他们获得45分以上是可能的。
不确定我是怎么做的。
修改
由于我的讲师没有提及数据库性能等,所以我做了以下几点。
我正常执行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)