MariaDB Trigger объединяет два стола? - PullRequest
0 голосов
/ 06 февраля 2020

Если у вас есть две таблицы (курс и учитель)

  • таблица курса содержит: C#, имя_курса, учитель, руководитель
  • таблица учителя содержит: T #, имя_переписчика, кафедра

Учитель и руководитель - это внешние ключи, означающие, что они содержат T #.

Теперь я хочу создать триггер, который проверяет, являются ли преподаватель и руководитель из одного и того же отдела (математика, Программирование et c.), если нет, то должна появиться ошибка. Это должна быть «вставка» нового триггера курса.

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете использовать следующий триггер:

delimiter //
create trigger trg_ins_course_teacher_supervisor 
before insert on course
for each row
begin
    if 
        (select t.department from teacher t where t.t# = new.teacher)
        != (select t.department from teacher t where t.t# = new.supervisor)
    then
        signal 
            sqlstate '45000' 
            set message_text = 'teacher and supervisor must belong to the same department';
    end if;
end
//
delimiter ;
...