我使用命令行在“college2”数据库中创建了 4 个表:
mysql> SHOW TABLES;
+--------------------+
| Tables_in_college2 |
+--------------------+
| course |
| enrolment |
| enrolment_status |
| student |
+--------------------+
4 rows in set (0.00 sec)
表enrolment_status
统计表enrolment
中每门类(class)的注册学生人数,并使用以下命令行创建:
CREATE TABLE enrolment_status SELECT code, count(id) FROM enrolment
GROUP BY code;
当我向 enrolment
表插入新记录时,我希望在 enrolment_status
表中看到相应的更改,但 enrolment_status
表保持不变,不反射(reflect)新插入的记录。
我应该如何纠正这个问题?
最佳答案
使用CREATE TABLE
与另一个表作为数据源,为目标表提供源表中数据的一次性快照。因此,对enrolment
进行后续插入将不会反射(reflect)在enrolment_status
中。最接近您的想法可能是在 enrolment
表顶部创建一个 View :
CREATE VIEW enrolment_view AS
SELECT code, COUNT(id)
FROM enrolment
GROUP BY code;
View enrolment_view
将反射(reflect)对基础表enrolment
的更改,包括新插入的记录。但是,无法将记录直接插入到此 View 中。
关于Mysql 表不反射(reflect)新的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47774327/