当表空时,Mysql视图返回数据

时间:2015-02-06 22:28:41

标签: mysql sql sql-server mysql-workbench

我遇到了一个奇怪的mysql问题。我正在开发一个C#的可视化应用程序,它将数据存储到数据库中。以前我使用SQL作为数据库,但我的客户改变了他对mysql的想法。所以我在mysql上重新创建了相同的模式。现在它发生了一件非常奇怪的事情:我的表是完全空的,但是当我执行视图时,它们会从旧SQL表中返回数据,当我直接从表中读取它们看起来是空的时。我用来连接的用户是不同的,最奇怪的是它甚至在我在mysql workbench上执行视图时也会发生。我甚至在mysql中截断了表格,但仍然是一样的。有谁知道可能导致这种异常的原因以及如何解决这个问题?

P.S。 Workbench 6.2版; Sql版SQL SERVER 2014

问候。

2 个答案:

答案 0 :(得分:2)

在MySQL中,视图是基于SQL语句的结果集的虚拟表。 它包含行和列,就像数据库中的真实表一样。视图中的字段是数据库中一个或多个实际表的字段。

执行视图时,它们会返回旧SQL表中的数据。这是因为您的视图仍包含您之前运行的数据。您每次执行时都忘记删除视图。要删除MySQL视图,请尝试以下方法:

DROP VIEW view_name

答案 1 :(得分:0)

视图不包含任何类型的数据 - 除了物化视图和MySQL没有这些数据。如果每次在表上执行DML语句时都必须删除并重新创建视图,那么视图将完全没用。

视图返回数据的唯一情况是,当一个进程更改视图中使用的表的内容时,在第一个进程提交更改之前,另一个进程将查询该视图。您尚未指定如何更改表以及如何查询这些表。您也没有包含create view声明。您可能正在使用其他表而不是您的想法。这可能发生在数据库的初始设计期间,如果表格像疯了一样被拍打。