Witam
Od razu zaznaczam że bawię się w Base od kilku dni więc moja wiedza jest raczej rokująca niż faktyczna stąd moga się pojawiać głupie pytania ale do rzeczy.
Czy jest możliwość zmiany nazwy tabeli? Kiedy zmieniam nazwę sypie mi się kwerenda która używa zmienianej tabeli. Muszę wtedy ją otworzyć ręcznie w SQL i ręcznie wyszukać starą nazwę i zmienić na nową. Czy Base rzeczywiście sobie z tym nie radzi czy robię coś źle?
Zmiana nazwy tabeli
Re: Zmiana nazwy tabeli
Zmiana nazwy tabeli i zmiana treści kwerendy są operacjami z różnych bajek.
Tabela jest przechowywana w bazie (wbudowanej w dokument albo zewnętrznej). Kwerenda natomiast jest częścią dokumentu i baza jako taka nic o jej istnieniu nie wie. Dla bazy kwerenda zaistnieje jedynie w chwili jej użycia jako żądanie do wykonania.
System użytkowy, jakim jest Base, nie modyfikuje treści kwerend przy okazji zmiany struktury bazy.
Istnieje kategoria obiektów zwanych perspektywami (views), które działają podobnie do kwerend, ale są przechowywane w bazie.
Jeżeli masz więc więcej klientów podłączonych do tej samej bazy i o takich samych uprawnieniach, to wszystkie będą widzieć te same perspektywy, ale każdy -- tylko własne kwerendy.
W przypadku zmiany nazwy tabeli używanej w perspektywie baza powinna zaprotestować. I Base (tj. wbudowana baza HSQL albo Firebird) rzeczywiście tak robi.
Da się pomyśleć, że system kliencki będzie kontrolował nazwy tabel i zmieniał odpowiednio treść definicji kwerend, ale byłoby to rozwiązanie bardzo ryzykowne, wręcz niebezpieczne. Powiedzmy że mamy dwóch klientów do tej samej bazy. Jeden z nich zarządzi zmianą tabel. Co miałby zrobić drugi? przecież on się w ogóle nie ma szans o tym dowiedzieć! (nie mówiąc już, że przecież mógłby w tym czasie nie być podłączony).
Tabela jest przechowywana w bazie (wbudowanej w dokument albo zewnętrznej). Kwerenda natomiast jest częścią dokumentu i baza jako taka nic o jej istnieniu nie wie. Dla bazy kwerenda zaistnieje jedynie w chwili jej użycia jako żądanie do wykonania.
System użytkowy, jakim jest Base, nie modyfikuje treści kwerend przy okazji zmiany struktury bazy.
Istnieje kategoria obiektów zwanych perspektywami (views), które działają podobnie do kwerend, ale są przechowywane w bazie.
Jeżeli masz więc więcej klientów podłączonych do tej samej bazy i o takich samych uprawnieniach, to wszystkie będą widzieć te same perspektywy, ale każdy -- tylko własne kwerendy.
W przypadku zmiany nazwy tabeli używanej w perspektywie baza powinna zaprotestować. I Base (tj. wbudowana baza HSQL albo Firebird) rzeczywiście tak robi.
Da się pomyśleć, że system kliencki będzie kontrolował nazwy tabel i zmieniał odpowiednio treść definicji kwerend, ale byłoby to rozwiązanie bardzo ryzykowne, wręcz niebezpieczne. Powiedzmy że mamy dwóch klientów do tej samej bazy. Jeden z nich zarządzi zmianą tabel. Co miałby zrobić drugi? przecież on się w ogóle nie ma szans o tym dowiedzieć! (nie mówiąc już, że przecież mógłby w tym czasie nie być podłączony).
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Zmiana nazwy tabeli
Czyli jak mawiał dr Emmett Brown - trzeba myśleć czterowumiarowo. I wszystko jasne.
Open Office 4.1.5