borykam siďż˝ z problemem - jak sobie radziďż˝, gdy trzeba "updejtowaďż˝" bazďż˝
danych, ju� pracuj�c� u klienta?
- odno�nie procedur, wyzwalaczy itp ju� sobie radz� (generuj� sobie skrypt w
IBExpercie i odpalam go odpowiednim komponentem u klienta na kompie i to
dzia�a)
- ale np gdy muszďż˝ zmieniďż˝ nieco strukturďż˝ tabel to jak dotychczas mam
wielkiego ZONL'a :( ..... IBExpert generuje skrypt, kt�ry po prostu za
pomoc� CREATE tworzy od nowa tak� tabel� z nowymi warto�ciami je�li chodzi o
pola, ich d�ugo�ci itp... Oczywi�cie taki skrypt nie chce si� wykona� bo
tabela ju� istnieje. Czy wi�c trzeba jako� najpierw sobie robi� kopi� danych
z tej tabeli (je�li tak to jak to si� robi przy takich updejtach
zwyczajowo) , potem siďż˝ kasuje tďż˝ starďż˝ tabelďż˝ i odpala siďż˝ taki skrypt
tworz�cy now�-poprawion�, a nast�pnie znowu kopiuje do niej dane kt�re
wcze�niej by�y?
mo�e jest jaki� prostszy spos�b, kt�rego ja - jeszcze ��todzi�b firebirdowo-
sql-owy nie widzďż˝ ???
prosz� o jakie� porady i sugestie jak do takich temat�w updejtu bazy
najlepiej podchodziďż˝.
pozdr
--
Wys�ano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
1. za�o�y� kolumne varchar o potrzebny rozmiarze on nazwie np. tmpvarchar
2. skopiowac do niej wartosci ze zmienianej kolumny
3. skasowac kolumne ,ktorej zmieniamy rozmiar
4. zalozyc kolumne varchar o nowej dlugosci
5. skopiowac dane z tmpvarchar
6. usunac kolumne tmpvarchar
> --
> Wys�ano z serwisu Usenet w portalu Gazeta.pl ->
> http://www.gazeta.pl/usenet/
> 1. za�o�y� kolumne varchar o potrzebny rozmiarze on nazwie np. tmpvarchar
> 2. skopiowac do niej wartosci ze zmienianej kolumny
> 3. skasowac kolumne ,ktorej zmieniamy rozmiar
> 4. zalozyc kolumne varchar o nowej dlugosci
> 5. skopiowac dane z tmpvarchar
> 6. usunac kolumne tmpvarchar
>
tak tylko dopytam jeszcze - rozumiem, �e w pkt.2 - musz� skopiowa� wszystkie
warto�ci ze wszystkich wierszy tej kolumny ca�ej tabeli ?
sorry za m�j laicyzm, ale jeszcze tylko jedno (je�li mo�na) - jak r�cznie w
kodzie SQL mam doda� t� temporalna kolumn� czy p�niej t� now�? pytam bo co�
mi to niezgrabnie che wyj�� :( IBExpert nie pokazuje skryptu, kt�rym robi
sobie tďż˝ operacjďż˝.
--
Wys�ano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
>> 1. założyć kolumne varchar o potrzebny rozmiarze on nazwie np. tmpvarchar
ALTER TABLE ... ADD (column definition
>> 2. skopiowac do niej wartosci ze zmienianej kolumny
UPDATE ... SET oldcol = newcol
>> 3. skasowac kolumne ,ktorej zmieniamy rozmiar
ALTER TABLE ... DROP columnName
>> 4. zalozyc kolumne varchar o nowej dlugosci
>> 5. skopiowac dane z tmpvarchar
>> 6. usunac kolumne tmpvarchar
>>
I nie podpieraj się IBExpert'em, jeśli nie znasz się na SQL'u. Tego typu
narzędzia są dobre do przyśpieszenia pracy jak już wiesz co i dlaczego
robisz. Albo dla lam kompletnych...
--
Arivald
--
wloochacz
> 3. skasowac kolumne ,ktorej zmieniamy rozmiar
ta ...skasuj kolumne jak masz na w jakims tigerze albo porocedurce odwo�anie
do tej kolumny :x
jasiek
Po co aż tyle operacji?
Zwykle długość pola zmieniamy gdy ma mieć większy rozmiar. Nie
wystarczy
alter column ?
Poza tym należy najpierw pousuwać triggery, procedury itp odnoszące
się do tego pola, a następnie przywrócić je po tej operacji.
>IBExpert generuje skrypt, który po prostu za
>pomocą CREATE tworzy od nowa taką tabelę z nowymi wartościami jeśli chodzi >o pola, ich długości itp...
Do tak prostych manipulacji proponuję IBCommand mojej konstrukcji
(do pobrania ze strony www.zpksoft.ssk.pl)
Paweł Krzyżanowski
Lepiej je wykomentować a potem przywrócić - tak jak to robi IBExpert.
Dla wielu to nie ma znaczenia, ale jednak po usunięciu procedur trzeba
pamiętać o odtworzeniu przyznanych do nich uprawnień.
--
z pozdrowieniami
Adam Siwoń
Ale często zmieniają się również typy parametrów wejściowych do
procedur i nie da się uaktywnić starych procedur.
pozdrawiam- Paweł Krzyżanowski
jezeli chcesz rozszerzy� d�ugo�c kolumny typu varchar - nie trzeba sie martwi� . Np chcesz zmieni� d�ugo�c kolumny moje_dane z 20 do 30 znak�w wystarczy zrobi� ALTER TABLE ALTER COLUMN MOJE_DANE TYPE VARCHAR(30). Poniewa� wszystkie dane istniej�ce w tej kolumnie s� kr�tsze niz nowa d�ugo�c wszystkie dane zostan�.
Jezeli chcia�bys skr�ci� kolumne .. trzeba by obci�c dane , np
update moja_tablica
set moje_dane = SUBSTRING(moje_dane FROM 1 FOR 15)
a potem juz alter table alter column ..
--
Pozdrawiam
Morff
--------------------
AQQ : 141151 (mo...@aqq.eu)
Wtedy zaczyna się zabawa z odpowiednią kolejnością odtwarzania - a więc
trzeba sobie wybrać co komu bardziej pasuje w jego przypadku.
No a gdy kolumna jest zdefiniowana jako zdefiniowana domena ? alter nie
pomo�e
Racja. Jednak nie stosowałem remowania - czy wyremowanie nie wymaga
również zabawy w kolejność ?
Pozdrawiam- PAweł Krzyżanowski
>
> No a gdy kolumna jest zdefiniowana jako zdefiniowana domena ? alter nie
> pomoże
Pomoże.
ALTER DOMAIN
Jak komentarze obejmują wyłącznie ciała procedur i nie ma większych
zmian w parametrach to raczej nie. Piszę raczej bo obecnie pracuję
zdecydowanie częściej pracuję na Oraclu niż FB, a tam ten problem jest
rozwiązany zupełnie inaczej.