dawn_stu_data 이라는 테이블이 있고,
login_day필드에 시험친날,
dap_jeachul 필드는 'Y'이어야만 답이 제대로 제출된 학생이고,
ave필드에 점수가 이미있고,
dawn_jungdap_data테이블의 sihum_end 필드(시험종료)가 'N'에서 'Y'로 바뀌면 성적을 처리하는데,
dawn_jungdap_data테이블에 업데이트 트리거를 걸었습니다.
그 트리거 함수가 아래와같은데,
dawn_stu_data 테이블의 세개의 빈 필드에 데이타를 채워넣어야됩니다.
inwon 필드에 sungjuk 테이블의 등록된 수가 들어가면되고,
deungsu 필드에 석차를 (공동순위 도 체크)
sangwi_per 필드에 상위 몇프로 라고 들어가야되는데,
이걸 프로그램 처리 안하고 db함수 자체에서 가능한가요?
CREATE OR REPLACE FUNCTION dawn_jungdap_data_update()
RETURNS trigger AS
$BODY$
declare
gcnt integer ;
get_login_day character(10);
begin
get_login_day = to_char(Now(),'yyyy-mm-dd') ;
-- 시험이 종료가되면...
if coalesce(old.sihum_end,'') <> 'Y' and coalesce(new.sihum_end,'') = 'Y' then
-- 답안제출 총인원을 구한다
Select coalesce(count(*),0) As gcnt
From dawn_stu_data
Where login_day = get_login_day
And dap_jeachul = 'Y';
/*
???
*/
end if;
return null;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION dawn_jungdap_data_update()
OWNER TO postgres;
|