Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQLite] "Przenoszenie" bazy danych
Forum PHP.pl > Forum > Bazy danych > SQLite
ddzkm
Słuchajcie, gdzieś czytałem, że SQLite nie obsługuje zapytań typu "ALTER", a skoro tak to tradycyjną dla SQL metodą nie da się np. dodać nowej kolumny do tabeli w bazie danych. Ale mam pytanie - czy da się taką operację zrobić "na okrętkę" to znaczy stworzyć nową tabelę (z wstawioną już dodatkową kolumną) i przenieść doń zawartość "starej tabeli? Jakiego polecenia można by tu użyć?

Pozdrawiam!
ddzkm
Ale to działa tylko w SQLite od wersji 3.0 wzwyż, a ja mam PHP5 + SQLite 2.0 (niestety bez możliwości aktualizacji), dlatego pytam biggrin.gif
zegarek84
ściągnij sobie starszą wersję SQLite Manager'a do mozilli (miałem reinstalkę i teraz ściągnąłem żeby dać Ci odpowiedź ale... jest nowsza wersja newet z definicją własnych funkcji - akurat pod mozillą to w js...)...

w starszej wersji był zawsze komunikat, że alter nie do końca jest zaimplementowane oraz dosyć niebezpieczne dla bazy i wyświetlona była komenda z zapytaniem SQL...

generalnie polegało to na kopiowaniu tabeli do tabeli tymczasowej, drop tabeli głównej i utworzenie jej od nowa z tymczasowej z modyfikacjami po czym drop tymczasowej - czyli kopiuj do tymczasowej nawet może już przystosowanej, kasuj główną i odtwórz główną, kasuj tymczasową...

edit...
a tak sobie wróciłem do tego tematu bo po niewczasie przypomniałem sobie, że komunikat był przy czym innym ;p - sorka ;p
za to gotowe rozwiązanie:
  1. CREATE TABLE "main"."test" ("id" INTEGER PRIMARY KEY NOT NULL ,"k1" INTEGER,"k2" TEXT,"k3" TEXT);
  2. INSERT INTO "main"."test" SELECT *, NULL AS "k3" FROM "main"."__temp__test";
  3. DROP TABLE "main"."__temp__test"


gdzie bazowa tabela to:


CREATE TABLE "main"."test" ("id" INTEGER PRIMARY KEY NOT NULL ,"k1" INTEGER,"k2" TEXT);

i w powyższym dodało się kolumne winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.