Mam kolumnę i chciałbym edytować niektóre z jej wierszy. Problem polega na tym, że tabela jest widokiem, więc nie mogę edytować wierszy. Jak mam przystąpić do rozwiązania tego problemu?Edycja widoku tylko do odczytu
Odpowiedz
Jeśli jest to widok, to nie jest stół. Dane dla widoku są rysowane z jednej lub więcej innych tabel. Edytuj tabelę podstawową, a gdy zbadasz dane w widoku, odzwierciedli on wprowadzone zmiany.
Widok SQL jest tabelą wirtualną opartą na zapytaniu SQL SELECT. Zasadniczo widok jest bardzo zbliżony do prawdziwej tabeli bazy danych (ma kolumny i wiersze, tak jak zwykły stół), z wyjątkiem faktu, że rzeczywiste tabele przechowują dane, podczas gdy widoki nie. Dane widoku są generowane dynamicznie, gdy odwołuje się widok. Widok odwołuje się do jednej lub więcej istniejących tabel bazy danych lub innych widoków. W efekcie każdy widok jest filtrem danych tabeli, do którego się odwołuje, a filtr ten może ograniczać zarówno kolumny, jak i wiersze tabel przywoływanych.
Jeśli chcesz zmodyfikować dane w tabeli, nie możesz tego zrobić w widoku. Widoki SQL są zawsze tylko do odczytu. Jeśli chcesz zmodyfikować tabelę poza widokiem, użyj czegoś takiego jak instrukcja UPDATE
lub ALTER TABLE
.
SQLite nie pozwala aktualizować widoków. Ale ma zezwalać na widok. Możesz więc napisać wyzwalacz INSTEAD OF UPDATE
, który dokonuje odpowiednich modyfikacji w tabeli podstawowej.
Jak zauważyła dan04, można użyć wyzwalaczy do aktualizacji widoków (jak w większości innych baz danych). SQLite, zobacz http://www.sqlite.org/lang_createtrigger.html#instead_of_trigger
Przykład z myślą o nazwie „myview”, zawierający tabelę „my_t2”
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
- 1. Kanał "tylko do odczytu" tylko do odczytu
- 2. Jak utworzyć pole tylko do odczytu w widoku
- 3. Właściwości tylko do odczytu
- 4. CoreOS: tylko do odczytu systemu
- 5. tylko do odczytu atrybutów przełącz
- 6. Lista ciągów tylko do odczytu
- 7. SQLite/PHP tylko do odczytu?
- 8. Tylko do odczytu obserwowalna kolekcja
- 9. Tabela jest „tylko do odczytu”
- 10. Otwórz plik tylko do odczytu
- 11. Właściwość tylko do odczytu OData
- 12. Edytor MVC3 Tylko do odczytu
- 13. Komórki DataGridView tylko do odczytu
- 14. Zastępowanie właściwość tylko do odczytu w podklasie
- 15. Zastępowanie abstrakcyjnej właściwości tylko do odczytu dla odczytu/zapisu Właściwość
- 16. Zastępuje właściwość tylko do odczytu z kolumną tylko do odczytu, która ma tę samą wartość.
- 17. Jak utworzyć właściwość tylko do odczytu?
- 18. C# BindingList tylko do odczytu błędu
- 19. Koherentny widok tylko do odczytu bazy danych
- 20. Ustawienie tylko do odczytu z właściwością JavaFx
- 21. Cały model jako tylko do odczytu
- 22. Utwórz p: kalendarz tylko do odczytu
- 23. Obiekt tekstowy JavaScript tylko do odczytu?
- 24. Mongoose tylko do odczytu bez schematu
- 25. NHibernate Linq w trybie tylko do odczytu
- 26. Java: odznacz plik jest tylko do odczytu
- 27. Dlaczego podział okna wymusza tylko do odczytu?
- 28. Automatyczna własność VB.net - tylko do odczytu?
- 29. Zastąp zmienną tylko do odczytu lldb swift
- 30. Punkt końcowy Sesame SPARQL tylko do odczytu
Widoki z pewnością nie są * zawsze * tylko do odczytu w większości baz danych (choć to prawda w SQLite) . Większość baz danych obsługuje edycję pojedynczych tabel bez agregacji. Niektóre bazy danych obsługują również edycję widoków wielu tabel. –
Dzięki za wskazanie tego. Możesz zaktualizować dane w widoku, pod warunkiem, że masz odpowiednie uprawnienia do podstawowych tabel. Jednak widoki w SQLite są zawsze tylko do odczytu. –