【发布时间】:2014-04-07 17:10:29
【问题描述】:
使用 Postgres 9.3。是否可以插入函数的结果?
我试过了:
CREATE FUNCTION apply_func() RETURNS TRIGGER AS $$
DECLARE gwa char(9);
BEGIN
gwa:=(select gwa_calc(new.studid));
IF (SELECT noGrade_check(new.studid)) THEN
RAISE NOTICE 'ACCEPTED: GRADES COMPLETE';
IF (SELECT yrlvl_check(new.studid)) THEN
RAISE NOTICE 'ACCEPTED:YRLVL_CHECK';
IF (SELECT fail_check1(new.studid, new.sch_name)) THEN
RAISE NOTICE 'ACCEPTED:FAIL_CHECK';
IF (SELECT semunit_check1(new.studid)) THEN
RAISE NOTICE 'ACCEPTED:UNIT_CHECK';
IF (SELECT gwa_check(new.studid, new.sch_name)) THEN
RAISE NOTICE 'ACCEPTED:GWA_CHECK';
INSERT INTO apply(studid, sch_name, gpa)
VALUES (new.studid, new.sch_name, gwa);
RETURN NEW;
ELSE
RAISE NOTICE 'DECLINED:GPA_CHECK';
RETURN NULL;
END IF;
ELSE
RAISE NOTICE 'DECLINED:UNIT_CHECK';
RETURN NULL;
END IF;
ELSE
RAISE NOTICE 'DECLINED:FAIL_CHECK';
RETURN NULL;
END IF;
ELSE
RAISE NOTICE 'DECLINED:YRLVL_CHECK';
RETURN NULL;
END IF;
ELSE
RAISE NOTICE 'DECLINED: NULL GRADE EXISTS';
RETURN NULL;
END IF;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER apply_trig
BEFORE INSERT ON apply
FOR EACH ROW EXECUTE PROCEDURE apply_func();
我希望在满足奖学金所需的所有其他要求后自动插入new.studid、new.sch_name 和函数gwa_calc(new.studid) 的结果。
我该怎么做?
【问题讨论】:
-
如何调用这个构造?
标签: function postgresql triggers return plpgsql