【问题标题】:Trigger - postgres触发器 - postgres
【发布时间】:2013-01-11 11:30:18
【问题描述】:

我创建了以下表格

教授 -------------------------------------------------- ---- 教授编号 |姓名 |房间 |奖金 -------------------------------------------------- ---- 演讲 -------------------------------------------------- 讲座编号 |标题 |学期时间 |由(教授参考)持有 --------------------------------------------------

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

也许我可以帮助别人,真的很棒!

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

【问题讨论】:

  • 您所要求的内容听起来像是应用程序逻辑,最好将其放置在应用程序代码中,而不是触发器中。或者这是一个学术练习?如果是这样,您能否更详细地描述您正在尝试做的事情?
  • 我只想通过示例的方式,触发器显示完整性,(从上下文学生管理我有表格:学生、讲座、教授、助理和听(学生和课程)并检查(与教授、学生、课程和成绩!)现在我想要一个在 postgres 下运行良好的触发器。也可以是另一个应用程序,也不是那么复杂,触发器对表做的主要事情!如果有人可以帮助我,那就太好了,非常感谢
  • @viv1d;请将相关信息放入您的question,而不是cmets。在您的问题下方点击左侧的“编辑”并进行澄清。 Here is one example for a trigger 有基本解释。 Try a search for many more.

标签: sql postgresql triggers


【解决方案1】:

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

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();

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多