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
5
A
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';
Czy można uzyskać listę tych widoków? – Interfector
@Interfector: tak, zobacz moją aktualizację. –
Fantastyczne. Sprawia, że poczucie sensu i dzięki za wyjaśnienie również. –