Вы можете сделать это без триггера или специальных функций.Идея состоит в том, чтобы использовать отношения внешнего ключа.,,определив дополнительный набор ключей и добавив DepartmentId
(избыточно) в таблицу соединений:
create table Students (
StudentId int primary key,
DepartmentId int not null references Department(Id),
-- ....
unique (DepartmentId, StudentId)
);
create table Classes (
ClassId int primary key,
DepartmentId int not null references Department(Id),
....
unique (DepartmentId, ClassId)
);
create table StudentClasses (
DepartmentId int references Department(DepartmentId),
StudentId int,
ClassId int,
-- ....
primary key (StudentId, ClassId),
foreign key (DepartmentId, StudentId) references (DepartmentId, StudentId),
foreign key (DepartmentId, ClassId) references (DepartmentId, ClassId),
);
Возможно, вы не хотите использовать избыточность, но это возможно без триггеров или специальных функций.