В MySQL, как использовать выражение для генерации столбцов? - PullRequest
0 голосов
/ 12 мая 2018

Теперь я хочу создать таблицу, которая будет содержать оценки студентов. Есть четыре столбца: student_id, homework_score, exam_score и final_score. Я хочу, чтобы final_score генерировался выражением: Round (homework_score * 0.3 + final_score * 0.7). И вот мой SQL-скрипт:

CREATE TABLE course (
student_id CHAR(8) NOT NULL,
homework_score INT NULL,
exam_score INT NULL,
final_score INT NULL DEFAULT Round((homework_score * 0.3 + exam_score * 0.7),0),
PRIMARY KEY (student_id))ENGINE = InnoDB;

Когда я попытался выполнить SQL, MySQL сказал, что в DEFAULT Round((homework_score * 0.3 + exam_score * 0.7),0).
произошла синтаксическая ошибка. Я новичок в MySQL, и я не могу понять, что не так с моим SQL. Если кто-нибудь может мне помочь, я буду благодарен.

1 Ответ

0 голосов
/ 12 мая 2018

A default ограничение должно быть константой.Начиная с MySQL 5.7.?, MySQL поддерживает сгенерированные столбцы.Вы можете выразить это как:

CREATE TABLE course (
    student_id CHAR(8) NOT NULL,
    homework_score INT NULL,
    exam_score INT NULL,
    final_score INT as ( Round((homework_score * 0.3 + exam_score * 0.7), 0) ),
    PRIMARY KEY (student_id)
) ENGINE = InnoDB;

В более ранних версиях вам нужно было использовать представление или триггеры для генерации значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...