SQL TRIGGERS: INSERT ORDATE в таблице, подключенной к другой таблице - PullRequest
0 голосов
/ 28 марта 2019

У меня есть этот стол, который называется «Учитель и школа».Я хотел бы создать триггер на столе учителя, чтобы проверить и запретить любую вставку или обновление человека в таблице учителя, чтобы он был учителем в нескольких школах.Схемы таблиц:

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?Нужно ли мне создавать ВИД для подсчета, если человек уже является учителем в школе?Это то, что я получил до сих пор, все еще пустой, грязный и неправильный, но был бы очень признателен, если бы кто-то мог помочь мне объяснить детали по частям.

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 голосов
/ 28 марта 2019

Этого можно достичь, создав уникальный индекс для Teacher_ID в таблице учителя.

...