Jedyną inną opcją jest ręczne wykonanie tego, co i tak robi wiele systemów RDBMS...
- Utwórz nową tabelę
Następnie możesz skopiować zawartość starej tabeli na porcję na raz. Zawsze zachowując ostrożność przy INSERT/UPDATE/DELETE w tabeli źródłowej. (Może być zarządzany przez wyzwalacz. Chociaż spowodowałoby to spowolnienie, nie jest to blokada...)
Po zakończeniu zmień nazwę tabeli źródłowej, a następnie zmień nazwę nowej tabeli. Najlepiej w transakcji.
Po zakończeniu ponownie skompiluj wszystkie procedury składowane itp., które używają tej tabeli. Plany wykonania prawdopodobnie przestaną obowiązywać.
EDYTUJ:
Niektóre komentarze zostały zgłoszone, że to ograniczenie jest nieco słabe. Pomyślałem więc, że przedstawię to z nowej perspektywy, aby pokazać, dlaczego tak jest...
- Dodanie nowego pola jest jak zmiana jednego pola w każdym wierszu.
- Blokady pola byłyby znacznie trudniejsze niż blokady rzędów, nie mówiąc już o blokowaniu tabel.
- Właściwie zmieniasz fizyczną strukturę dysku, każdy zapis się porusza.
- To naprawdę jest jak AKTUALIZACJA całego stołu, ale ma większy wpływ...