Вы не можете написать это ограничение для существующей модели базы данных, которая у вас есть сейчас.
Единственный способ, которым я вижу, что вы можете это сделать, - это изменить первичный ключ Students
на (id
)., program
):
CREATE TABLE Students (
id NUMERIC(10,0) UNIQUE NOT NULL,
program VARCHAR(200) NOT NULL,
CONSTRAINT pk_Students PRIMARY KEY (id, program),
FOREIGN KEY (program) REFERENCES Programmes(name)
);
Тогда таблица StudentsBranch
может естественным образом принудительно применять оба FK с использованием single column program
, например:
CREATE TABLE StudentsBranch (
student NUMERIC(10,0) NOT NULL,
program VARCHAR(200) NOT NULL,
branch VARCHAR(200) NOT NULL,
CONSTRAINT pk_StudentsBranch PRIMARY KEY (student),
FOREIGN KEY (student, program) REFERENCES Students (id, program),
FOREIGN KEY (branch, program) REFERENCES Branches (name, program)
);