TRIGGERS SQL:在连接到另一个表的表中插入或更新

时间:2019-03-28 19:19:13

标签: sql function triggers schema plpgsql

我有这张桌子叫做教师和学校。我想在“教师”表上创建一个触发器,以检查并禁止任何人在“教师”表中进行任何插入或更新,以使其成为多所学校的老师。表的模式:

CREATE TABLE School (
  ID      char(3) primary key,
  Name    text not null,
  Address text default null,
);

CREATE TABLE Teacher (
  ID         char(3) references School(ID),
  Teacher_ID char(5)
  Name       text,
  primary key (ID, Teacher_ID)
);

我刚起步,希望对这个问题有更好的了解。这是否意味着我必须创建两个触发器:一个用于INSERT,另一个用于UPDATE?如果该人已经是学校的老师,我是否必须创建一个VIEW来帮助计数?这是我到目前为止所得到的,仍然是空虚的,混乱的和错误的,但是如果有人可以帮助我逐个解释,将不胜感激。

create or replace function
    insertPerson() returns trigger
as $$
declare
    t Teacher;
begin
    select * into t from Teacher where ID = new.Teacher_ID;
    update Teacher
    return new;
end;
$$ language plpgsql;

CREATE TRIGGER before_teacher_update 
    BEFORE UPDATE ON teacher
    FOR EACH ROW execute procedure insertPerson();

1 个答案:

答案 0 :(得分:0)

您可以通过在Teacher表上的Teacher_ID上创建唯一索引来实现。