Postgresql触发器基于一列的值来更改或更新每行中另一列的值。
我是Postgresql的一名新生。我在学生表中只有4列Postgresql触发器基于一列的值来更改或更新每行中另一列的值。,sql,postgresql,triggers,Sql,Postgresql,Triggers,我是Postgresql的一名新生。我在学生表中只有4列 id serial, student_name varchar(50), student_marks integer, grade varchar(1) 现在,我希望创建一个名为fill\u grade\u auto的触发器(语言:pl/sql),以便根据student\u分数,分数将自动更新为a(90分以上),B(60分以上但90分以下),其余为C级 此触发器应在每行的每次插入
id serial,
student_name varchar(50),
student_marks integer,
grade varchar(1)
现在,我希望创建一个名为fill\u grade\u auto
的触发器(语言:pl/sql),以便根据student\u分数
,分数将自动更新为a(90分以上),B(60分以上但90分以下),其余为C级
此触发器应在每行的每次插入或更新后触发。我尝试过不同的方法,但没有成功。你可以这样做
CREATE OR REPLACE FUNCTION set_grade()
RETURNS TRIGGER
AS $$
BEGIN
NEW.grade := CASE WHEN NEW.student_marks >= 90 THEN 'A'
WHEN NEW.student_marks BETWEEN 60 AND 89 THEN 'B'
ELSE 'C' END;
RETURN NEW;
END $$ LANGUAGE plpgsql;
CREATE TRIGGER set_grade_trigger
BEFORE INSERT OR UPDATE ON students
FOR EACH ROW
EXECUTE PROCEDURE set_grade();
注意:您可能需要调整
案例
中的分数边界,因为您的问题在主题上有点含糊不清。如果逐字阅读,90
的值不属于任何等级。因此,我冒昧地用我自己的方式来解释它(A:90请包含您尝试的一些代码好问题和好答案-为什么它会关闭???它真的很有用!我已经标记为mod干预以尝试重新打开它的帮助?您的问题需要更多帮助吗?非常感谢peterm!!!它只提醒我需要在learni上下功夫ng pl/sql。谢谢!好问题