【问题标题】:Mysql tables does not reflect new changesMysql 表没有反映新的变化
【发布时间】:2017-12-12 13:53:15
【问题描述】:

我在 'college2' 数据库中使用命令行创建了 4 个表:

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 表保持不变,不反映新插入的记录。

我应该如何纠正这个问题?

【问题讨论】:

    标签: mysql command-line count create-table


    【解决方案1】:

    CREATE TABLE 与另一个表一起用作数据源,可为目标表提供源表中数据的一次性快照。因此,对enrolment 进行后续插入不会反映在enrolment_status 中。最接近您的想法的可能是在 enrolment 表的顶部创建一个视图:

    CREATE VIEW enrolment_view AS
    SELECT code, COUNT(id)
    FROM enrolment
    GROUP BY code;
    

    视图enrolment_view 将反映对基础表enrolment 的更改,包括新插入的记录。但是,无法将记录直接插入到该视图中。

    【讨论】:

    • 蒂姆,正如你所说,它工作得很好。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 2021-04-23
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-10
    相关资源
    最近更新 更多