嘿,我想创建一个函数,为学生添加缺勤,如果他在一个材料中有3个缺勤,这意味着他被淘汰了,我想创建一个函数,添加缺勤,他达到3个缺勤,这意味着他被淘汰了,但问题是,当我尝试这个函数时,它不会添加到上一个表中,但它会创建另一行
CREATE TABLE abssance (
id_abssance SERIAL PRIMARY KEY,
id_etudiant int,
id_matiere int,
abss int,
eliminé int
);
create or replace function test2(etudiant int, matiere int, abssancee int)
RETURNs int as
$$
begin
update abssance set id_etudiant=etudiant,id_matiere=matiere, abss= abssancee + 1 where abss > 2;
if abssancee=3
then
update abssance set eliminé=1 ;
return 1;
else
return 0;
end if;
end $$
language plpgsql;
总是返回0不会在实际行中添加另一个值,我想更新它
我得到的结果是
但我想要这样
如果abss=3,它将在elimin上加1é
1条答案
按热度按时间ykejflvf1#
这个
where
更新的子句听起来是错误的。从逻辑上讲,您不希望更新有两个缺勤的所有行,而是为给定的学生/课程更新一行类似地
elimine
正在丢失where
子句来更新适当的学生