如何使用触发器减少APEX的计数和计算,以确保计数不低于0

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

我想制作一个触发器功能,每当教师对学生提出投诉时,该功能会减少学生的令牌数。我目前没有一张表可以跟踪学生计算变化的时间,我只有一张表显示他们的初始计数。我可以在显示此初始值的顶点上进行显示,并且只要教师在顶点上提交表单是对该学生的抱怨,这个数量会减少吗? (教师还应该能够向学生提供代币以表现出良好的行为)。

此令牌计数也不能低于0,所以我猜这只是对令牌计数的计算,确保令牌值不能小于0(或者至少我想这可以做到)。

我是一种新的触发器,到目前为止我所知道的是如何在数据库上创建新行时创建一个序列和一个插入新主键值的触发器。我不习惯触发减少计数,所以我不知道这将如何工作。

如上所述,我也没有一个表来跟踪学生的令牌数量变化,我不确定我是否需要在我的数据库中的表格,或者如果顶点可以以某种方式只为我显示值。

任何帮助表示赞赏。

sql oracle oracle-apex
1个回答
0
投票

对我来说,它看起来像Stack Overflow的上升和下降。

由于有一个表格包含学生的数据,其中一个列是NUMBER_OF_VOTES,那么教师会有两个按钮:P1_UPVOTEP1_DOWNVOTE(或者你想要命名的任何一个)。

推动P1_UPVOTE会做

update student s set
  s.number_of_votes := s.number_of_votes + 1
where s.student_id = :P1_STUDENT_ID;

同样,推P2_DOWNVOTE

update student s set
  s.number_of_votes := s.number_of_votes - 1
where s.student_id = :P1_STUDENT_ID
  and s.number_of_votes > 0;      --> so that student wouldn't have negative votes

我想应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.