Я создал 4 таблицы, используя командную строку в базе данных 'college2':
mysql> SHOW TABLES;
+--------------------+
| Tables_in_college2 |
+--------------------+
| course |
| enrolment |
| enrolment_status |
| student |
+--------------------+
4 rows in set (0.00 sec)
Таблица enrolment_status
подсчитывает количество зарегистрированных учащихся в каждом курсе, начиная с enrolment
в таблице и создается с использованием следующей командной строки:
CREATE TABLE enrolment_status SELECT code, count(id) FROM enrolment
GROUP BY code;
Когда я вставляю новую запись в таблицу enrolment
, я ожидаю увидеть соответствующее изменение в таблице enrolment_status
, но таблица enrolment_status
остается неизменной, не отражает вновь вставленную запись.
Как мне исправить это?
Использование CREATE TABLE
с другой таблицей в качестве источника данных предоставляет целевой таблице однократный снимок данных в исходной таблице. Следовательно, последующие вставки в enrolment
не отразятся в enrolment_status
. Самое близкое к тому, что вы имеете в виду, - это создать представление поверх таблицы enrolment
:
CREATE VIEW enrolment_view AS
SELECT code, COUNT(id)
FROM enrolment
GROUP BY code;
Представление enrolment_view
будет отражать изменения в базовой таблице enrolment
, включая вновь вставленные записи. Но было бы невозможно вставить записи непосредственно в это представление.