Я искал и занимался этим часами, и я уверен, что есть супер простой способ сделать это.
У меня есть две таблицы:
CREATE TABLE Students
(
idnr NUMERIC(10) PRIMARY KEY,
name TEXT NOT NULL,
login TEXT NOT NULL,
program TEXT NOT NULL
);
CREATE TABLE Branches
(
name TEXT,
program TEXT,
PRIMARY KEY(name, program)
);
И вВ третьей таблице я хочу убедиться, что «программа» одинакова для учащегося и филиала.
CREATE TABLE StudentBranches
(
student NUMERIC(10) PRIMARY KEY REFERENCES Students(idnr),
branch TEXT NOT NULL,
program TEXT NOT NULL,
FOREIGN KEY (branch, program) REFERENCES Branches(name, program),
FOREIGN KEY (student, program) REFERENCES Students(idnr, program)
);
Проблема, с которой я сталкиваюсь, заключается в том, что она пытается получить весь столбец из программы вУченики.Я хочу, чтобы значение только для указанного учащегося не указывалось на весь столбец.
Чтобы уточнить:
Учащиеся:
idnr | name | login | program
-----+------+-------+-----------
1234 | bob | 1111 | prog1
2222 | tom | 2222 | prog2
Филиалы:
branch | program
--------+---------
branch1 | prog1
branch2 | prog2
branch3 | prog1
Здесь Том должен иметь возможность войти в таблицу StudentBranches
только с B1 и B3, поскольку он принадлежит к Prog1, которая является программой для B1.И Боб может войти только в B2.