我的缺勤函数不能正常工作

e5nqia27  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(351)

嘿,我想创建一个函数,为学生添加缺勤,如果他在一个材料中有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é

ykejflvf

ykejflvf1#

这个 where 更新的子句听起来是错误的。从逻辑上讲,您不希望更新有两个缺勤的所有行,而是为给定的学生/课程更新一行

update  abssance 
set abss= abssancee + 1 
WHERE id_etudiant=etudiant AND id_matiere=matiere;

类似地 elimine 正在丢失 where 子句来更新适当的学生

update abssance 
set eliminé=1 
WHERE id_etudiant=etudiant;

相关问题