触发 - postgres

时间:2013-01-11 11:30:18

标签: sql postgresql triggers

我创建了以下表格

professor
------------------------------------------------------
ProfNr | Name | Room | Bonus
------------------------------------------------------

lecture
--------------------------------------------------
Lecture No | Title | semester hours | held by (Prof Reference)
--------------------------------------------------

我正在寻找postgres下的触发器,使用教授给予奖金的每周课程(薪水)

也许我可以帮助别人,非常棒!

甚至可能触发其他应用的想法

1 个答案:

答案 0 :(得分:0)

首先,我认为您的奖金应该是另一张表,以便您可以按需汇总。所以这留下了三个表:

CREATE TABLE professor (
   profid serial not null unique,
   ...
);

CREATE TABLE lecture (
   lecture_id serial not null unique,
   professor int not null references professor(profid),
   ...
);

CREATE TABLE prof_bonus (
   lecture_id int references lecture(id),
   profid int references professor (profid),
   bonus_amt numeric not null,
   primary key (lecture_id, profid)
);

CREATE FUNCTION add_bonus() RETURNS TRIGGER LANGUAGE PLPGSQL AS
$$
BEGIN
INSERT INTO prof_bonus (lecture_id, profid, bonus_amt)
VALUES (new.lecture_id, new.profid, 100);
RETURN NEW;
END;
$$;

CREATE TRIGGER add_bonus AFTER INSERT TO lecture FOR EACH ROW 
EXECUTE PROCEDURE add_bonus();