我有一个列,我想编辑它的一些行。问题是该表是一个视图,所以我无法编辑行。我将如何解决这个问题?
答案 0 :(得分:3)
SQLite不允许您更新视图。但它确实允许triggers视图。因此,您可以编写一个INSTEAD OF UPDATE
触发器,对基础表进行适当的修改。
答案 1 :(得分:3)
正如dan04所指出的,您可以使用触发器来更新视图(就像在大多数其他数据库中一样)。对于sqlite,请参阅http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger
带有名为“myview”的视图的示例,其中包含表“my_t2”
CREATE TRIGGER myview_update INSTEAD OF UPDATE ON myview
BEGIN
UPDATE my_t2 SET field1 = new.field1, field2 = new.field2 WHERE my_t2.key = old.key;
END
答案 2 :(得分:2)
如果是视图,则不是表格。视图的数据来自一个或多个其他表。编辑基础表,当您检查视图中的数据时,它将反映您所做的更改。
答案 3 :(得分:0)
SQL View是一个虚拟表,它基于SQL SELECT查询。本质上,一个视图非常接近真实的数据库表(它具有像常规表一样的列和行),除了真实表存储数据这一事实,而视图不存储数据。引用视图时动态生成视图的数据。视图引用一个或多个现有数据库表或其他视图。实际上,每个视图都是其中引用的表数据的过滤器,此过滤器可以限制引用表的列和行。
如果您希望修改表格中的数据,则无法使用视图进行修改。 SQL视图始终只读。如果您想在View之外修改表格,请使用类似UPDATE
或ALTER TABLE
语句的内容。