每当学生的新GPA低于旧GPA 1或更多时,我就会尝试输出一条消息。
Create or Replace TRIGGER AUGPA
after update on students
for each row -- or should I put 'for GPA' the column name
begin
if (:new.gpa - :old.gpa) >= 1 -- How do I compare these expressions? I get an error here.
THEN
dbms_output.put_line ('Old GPA is lower than previous GPA by at least 1 point.')
End if;
End;
/
学生表
SNUM SNAME STANDING MAJOR GPA MAJORGPA
**** ***** ******** ***** *** ********
121 Liz 2 FIN 2.8 3.2
答案 0 :(得分:0)
您可以尝试以下更改:
1)你可以使用
更新学生GPA后
2)你可以比较
IF :new.gpa < :old.gpa THEN
dbms_output.put_line ('Old GPA is lower than previous GPA by at least 1
point.')
END IF;
答案 1 :(得分:0)
按照以下步骤和此代码获得所需的结果。
Create or Replace TRIGGER AUGPA
after update on students
for each row
begin
if :new.gpa - :old.gpa >= 1
THEN
dbms_output.put_line ('Old GPA is lower than current GPA by at least 1 point.');
End if;
End;
/
set serveroutput on;
update Students set gpa = gpa + 1 ;
commit;
答案 2 :(得分:0)
您的操作是倒退的。 让我们使用以下new.gpa = 1.5,old.gpa = 3.所以gpa已经下降了1.5,所以应该发出消息。将不会发出消息:代码为&#34;如果new.gpa - old.gpa&gt; = 1则消息...&#34;但是1.5 - 3 = -1.5不是&gt; - 1.更改为&#34;如果old.gpa - new.gpa&gt; = 1&#34;。
@Anand建议不好,因为如果gpa从3下降到2.9,它会产生消息;只是一个.1下降