如何编辑SQLite数据库中只读视图的某些行?

plupiseo  于 2023-03-03  发布在  SQLite
关注(0)|答案(4)|浏览(304)

我有一个列,我想编辑其中的一些行。问题是该表是一个视图,所以我无法编辑行。我该如何继续解决这个问题?

yzxexxkh

yzxexxkh1#

SQLite不允许你更新视图,但是它允许对视图使用triggers,所以你可以写一个INSTEAD OF UPDATE触发器,对底层的表进行适当的修改。

ojsjcaue

ojsjcaue2#

正如dan04所指出的,您可以使用触发器来更新视图(就像在大多数其他数据库中一样)。http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger
包含表“my_t2”的名为“myview”的视图示例

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
62o28rlo

62o28rlo3#

如果是视图,则不是表。视图的数据是从一个或多个其他表中提取的。编辑基础表,当您检查视图中的数据时,它将反映您所做的更改。

ifsvaxew

ifsvaxew4#

SQL视图是基于SQL SELECT查询的虚拟表,从本质上讲,视图非常接近真实的的数据库表(它具有列和行,就像常规表一样),除了真实的表存储数据的事实之外,而视图则不是。视图的数据是在视图被引用时动态生成的。一个视图引用一个或多个现有的数据库表或其他视图。实际上,每个视图都是其中引用的表数据的过滤器,并且该过滤器可以限制引用表的列和行。
如果要修改表中的数据,则不能使用视图执行此操作。SQL视图总是只读的。如果要在视图之外修改表,请使用类似UPDATEALTER TABLE语句的语句。

相关问题