为什么SQLite不支持写入视图?

时间:2014-01-29 14:59:38

标签: sqlite view

这似乎是一个奇怪的遗漏,虽然来自the wording of their website非常有意。是否存在关于写入视图的内容,这对SQLite的目的没有意义 - 也许是因为它是嵌入式的?

1 个答案:

答案 0 :(得分:2)

SQLite允许通过为视图创建触发器来编辑视图: http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger

默认情况下,视图不可编辑,因为很难预测视图的哪些列是真正可编辑的(与表列相关),哪些不是(它们是常量或表达式)。例如,您有查看SELECT:

SELECT 'test', 456, substr(col, 2), col FROM table

在这种情况下,只有最后一栏才有意义进行编辑。

有时您确实知道可以编辑某个表达式,因为表达式可以通过两种方式转换,例如:

SELECT hex(col) FROM table

对于此类列,您可以在用户编辑时将十六进制表达式转换回二进制值并输入十六进制值。

这种情况和更多情况都是可能的,因此开发人员可以根据他对编辑视图列的最佳了解来实现正确的编辑算法。