Ошибки ограничения внешнего ключа

0

Я продолжаю получать 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. В противном случае я получаю ошибки. Может ли кто-нибудь найти проблему?

Теги:

1 ответ

0

Понятие внешних ключей заключается в том, что родительская таблица должна иметь соответствующую запись, чтобы включить этот ключ в дочерний элемент. В вашей родительской таблице первичный ключ (имя_программы, критерийНум, оценка). Однако в вашем детском столе вы пытаетесь создать три ограничения внешнего ключа для таблицы рубрик, по одному для каждого отдельного столбца.

Если вы объединяете эти три ограничения в один и сопоставляете столбцы первичного ключа, это должно сработать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню