Я продолжаю получать ERROR1215, когда создаю свой стол. Я сузил проблему до двух атрибутов "score" и "criteriaNum". Я не могу понять, почему это вызывает проблемы.
CREATE TABLE IF NOT EXISTS 'sys'.'rubric' (
'programName' VARCHAR(100) NOT NULL,
'criteriaNum' INT UNSIGNED NOT NULL,
'score' INT UNSIGNED NOT NULL,
'criteria' TINYTEXT NOT NULL,
'description' TINYTEXT NOT NULL,
PRIMARY KEY ('programName', 'criteriaNum','score'),
CONSTRAINT 'rubric_programName'
FOREIGN KEY ('programName')
REFERENCES 'sys'.'degree_program' ('programName')
ON DELETE CASCADE
ON UPDATE CASCADE)
COMMENT 'Each entry in the rubric table corresponds to a criteria,score pair.';
CREATE TABLE IF NOT EXISTS'sys'.'evaluator_scores' (
'evaluatorName' VARCHAR(100) NOT NULL,
'aid' INT NOT NULL,
'programName' VARCHAR(100) NOT NULL,
'criteriaNum' INT UNSIGNED NOT NULL,
'score' INT UNSIGNED NOT NULL,
PRIMARY KEY ('aid', 'evaluatorName', 'programName', 'criteriaNum', 'score'),
CONSTRAINT 'score_aid'
FOREIGN KEY ('aid')
REFERENCES 'sys'.'application' ('aid')
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT 'score_evalName'
FOREIGN KEY ('evaluatorName')
REFERENCES 'sys'.'evaluations' ('evaluatorName')
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT 'score_programName'
FOREIGN KEY ('programName')
REFERENCES 'sys'.'rubric' ('programName')
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT 'score_criteriaNum'
FOREIGN KEY ('criteriaNum')
REFERENCES 'sys'.'rubric' ('criteriaNum')
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT 'score_score'
FOREIGN KEY ('score')
REFERENCES 'sys'.'rubric' ('score')
ON DELETE CASCADE
ON UPDATE CASCADE);
Если я удалю ограничения и критерииNum ограничения, он построит valuator_scores. В противном случае я получаю ошибки. Может ли кто-нибудь найти проблему?
Понятие внешних ключей заключается в том, что родительская таблица должна иметь соответствующую запись, чтобы включить этот ключ в дочерний элемент. В вашей родительской таблице первичный ключ (имя_программы, критерийНум, оценка). Однако в вашем детском столе вы пытаетесь создать три ограничения внешнего ключа для таблицы рубрик, по одному для каждого отдельного столбца.
Если вы объединяете эти три ограничения в один и сопоставляете столбцы первичного ключа, это должно сработать.