2012-05-02 24 views
5

Czy można utworzyć WIDOK (nie tymczasowy widok) w bazie danych Sqlite, do której dołączono inne bazy danych? Widok powinien umożliwiać dostęp do danych ze wszystkich baz danych za pośrednictwem połączonych tabel.Widok Sqlite w wielu bazach danych

Odpowiedz

7

No, widok musi być tymczasowe, w przeciwnym razie wystąpi błąd:

sqlite> create view view1 as select * from db2.foo union select * from main.foo; 
Error: view view1 cannot reference objects in database db2 
sqlite> create temp view view1 as select * from db2.foo union select * from main.foo; 
sqlite> select * from view1; 
... 

Ma to sens, ponieważ tymczasowy pogląd jest częścią automatycznie utworzonego temp bazy danych, która istnieje tylko dla bieżącego procesu.

EDIT:

Można wymienić tymczasowe tabele i widoki (wszystkie przechowywane w automatycznie utworzonej temp bazy danych) w ten sposób:

sqlite> .headers on 
sqlite> select * from sqlite_temp_master; 
type|name|tbl_name|rootpage|sql 
view|view1|view1|0|CREATE VIEW view1 as select * from db2.foo union select * from main.foo 

do listy wyświetleń tylko:

select * from sqlite_temp_master where type='view'; 
+0

Czy można uzyskać listę tych widoków? – Interfector

+0

@Interfector: tak, zobacz moją aktualizację. –

+0

Fantastyczne. Sprawia, że ​​poczucie sensu i dzięki za wyjaśnienie również. –

Powiązane problemy