0

如何从 MySql 中的存储过程中截断视图表。首先尝试执行以下查询失败,可能是错误“TRUNCATE TABLE tester”。Tester 是我从 mysql 中的创建视图创建的视图表。我想截断视图表并通过存储过程输入新行。

4

1 回答 1

1

TRUNCATE TABLE不适用于视图。

您可以DELETE FROM tester,如果视图是可更新的视图,它会将 DELETE 应用于基础表。但是 DELETE 比 TRUNCATE 慢,因为 DELETE 必须做一些记账以确保它可以回滚,而 TRUNCATE 不能回滚。

您可以改为这样做TRUNCATE TABLE table_tester_is_based_on,但正如@fancyPants 所提到的,请确保这是您想要做的,因为它会处理基表中的所有数据。MySQL 视图不存储基表的副本,它们更像是针对基表的查询的别名。

于 2013-10-21T16:50:03.187 回答