我可以创建一个SQLite视图UNIONING所有数据库吗?
问题描述:
我有管理文件的数据库。有多个的原因是他们住在不同的驱动器上(想想USB驱动器)。我想编写适用于所有驱动器上的文件的查询。问题是,我无法取消视图以使用另一个数据库(正在使用它)重新创建它。因此,我想知道是否有办法编写一个视图来合并来自.databases
的每个数据库中具有相同名称的所有表?这样,当附加一个新的数据库时,我不必去掉视图。我可以创建一个SQLite视图UNIONING所有数据库吗?
也许作为最接近的答案,是否可以在ATTACH上编写触发器并让触发器重新创建视图(以便至少将停机时间降至最低)?
答
SQLite不支持任何我知道的“附加”触发器,只能删除,插入和更新。
你想要做的事可能是你的程序最好完成,而不是SQLite本身。您可以随时在自己的代码中手动删除并重新创建视图(因为视图无法修改,因此必须进行修改)。当然,这需要一个锁定(使表格不能像你所说的那样),但即使SQLite为你工作,这可能也是必要的。
无论哪种方式,视图创建速度都非常快,所以它不应该影响程序的性能。
请定义“取下视图”的含义。 – 2011-12-31 02:49:32
意思是说,你不得不放弃它,或者改变它。无论哪种方式,表格在一段时间内都无法使用。 – chacham15 2011-12-31 03:00:33