Mysql 表不反射(reflect)新的更改

标签 mysql command-line count create-table

我使用命令行在“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/

相关文章:

mysql - InnoDb 比 MyISAM 更适合频繁的并发更新和插入,我这样说对吗?

mysql当年与当年+6个月

mysql - 想要从mysql获取下周的数据

mysql - 超过 PyMYSQL 锁等待超时

java - 从可能包含空格的 java 执行命令

perl - 我的 ETrade OAuth 获取 token 请求有什么问题?

linux - 为什么我的 Windows 命令行允许 Linux 命令?

使用 Count 的 SQL,在同一单元格中多次出现相同的 "Like"

Oracle 组/计数查询

不分组的MySQL计数