-- WŁĄCZ/wyłącz FK zależnie od etapu migracji PRAGMA foreign_keys = OFF; BEGIN TRANSACTION; -- 1) Nowa tabela z właściwym FK (ON DELETE CASCADE) CREATE TABLE wplata_new ( id INTEGER PRIMARY KEY, zbiorka_id INTEGER NOT NULL, kwota REAL NOT NULL, data DATETIME, opis TEXT, FOREIGN KEY(zbiorka_id) REFERENCES zbiorka(id) ON DELETE CASCADE ); -- 2) (opcjonalnie) upewnij się, że nie ma „sierotek” -- SELECT w.* FROM wplata w LEFT JOIN zbiorka z ON z.id = w.zbiorka_id WHERE z.id IS NULL; -- 3) Kopiowanie danych INSERT INTO wplata_new (id, zbiorka_id, kwota, data, opis) SELECT id, zbiorka_id, kwota, data, opis FROM wplata; -- 4) Usunięcie starej tabeli DROP TABLE wplata; -- 5) Zmiana nazwy nowej tabeli na właściwą ALTER TABLE wplata_new RENAME TO wplata; -- 6) Odtwórz indeksy/trigger-y jeśli jakieś były (przykład indeksu po FK) -- CREATE INDEX idx_wplata_zbiorka_id ON wplata(zbiorka_id); COMMIT; PRAGMA foreign_keys = ON; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; ALTER TABLE global_settings ADD COLUMN logo_url TEXT DEFAULT ''; ALTER TABLE global_settings ADD COLUMN site_title TEXT DEFAULT ''; ALTER TABLE global_settings ADD COLUMN show_logo_in_navbar BOOLEAN DEFAULT 0; COMMIT; PRAGMA foreign_keys=ON; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- 1) Dodajemy nowe kolumny (SQLite pozwala tylko na ADD COLUMN) ALTER TABLE global_settings ADD COLUMN navbar_brand_mode TEXT DEFAULT 'text'; ALTER TABLE global_settings ADD COLUMN footer_brand_mode TEXT DEFAULT 'text'; ALTER TABLE global_settings ADD COLUMN footer_text TEXT; -- 2) Backfill: zgodność wsteczna z show_logo_in_navbar UPDATE global_settings SET navbar_brand_mode = 'logo' WHERE COALESCE(show_logo_in_navbar, 0) = 1; -- 3) Upewnij się, że wartości są ustawione (na wypadek NULL-i) UPDATE global_settings SET navbar_brand_mode = COALESCE(navbar_brand_mode, 'text'), footer_brand_mode = COALESCE(footer_brand_mode, 'text');