0Pricing
SQL Academy · Lektion

Spalten ohne Ausfallzeit umbenennen

Fügen Sie eine neue Spalte hinzu, schreiben Sie vorübergehend in beide Spalten, füllen Sie die neue Spalte nach, wechseln Sie die Lesezugriffe und löschen Sie die alte Spalte – das klassische Muster zum Umbenennen ohne Ausfallzeit.

Spalten ohne Ausfallzeit umbenennen ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Der naive Ansatz scheitert

ALTER TABLE t RENAME COLUMN a TO b; ändert nur Metadaten und ist daher schnell. ABER die Anwendung erwartet die Spalte "a"; nach der Umbenennung schlägt jede Abfrage fehl, die "a" liest.

Strategie: Expand → Migrate → Contract

Das etablierte Muster für Änderungen ohne Ausfallzeit:

  1. Expand — die neue Spalte hinzufügen, ohne die alte zu entfernen
  2. Die Anwendung eine Zeit lang in beide Spalten schreiben lassen
  3. Migrate — historische Daten in die neue Spalte übertragen
  4. Lesezugriffe auf die neue Spalte umstellen
  5. Contract — die alte Spalte löschen

Schritt für Schritt: user_name → full_name umbenennen

Detaillierte Anleitung:

Schritt 1 — Die neue Spalte hinzufügen

Online möglich (seit PG 11 mit konstantem Standardwert nur eine Metadatenänderung):

ALTER TABLE users ADD COLUMN full_name VARCHAR(100);

Schritt 2 — Doppelt schreiben

Stellen Sie Code bereit, der in BEIDE Spalten schreibt:

// App writes to both:
UPDATE users SET user_name = $1, full_name = $1 WHERE id = $2;
INSERT INTO users (..., user_name, full_name) VALUES (..., $name, $name);

Schritt 3 — Daten nachtragen

Übertragen Sie historische Daten in Batches:

UPDATE users SET full_name = user_name
WHERE full_name IS NULL
  AND id IN (
    SELECT id FROM users WHERE full_name IS NULL LIMIT 10000
  );
-- Run in a loop until 0 rows affected.

Schritt 4 — NOT NULL hinzufügen (online)

Erzwingen Sie nach dem Nachtragen sicher NOT NULL:

ALTER TABLE users
  ADD CONSTRAINT fn_not_null CHECK (full_name IS NOT NULL) NOT VALID;
ALTER TABLE users VALIDATE CONSTRAINT fn_not_null;
ALTER TABLE users ALTER COLUMN full_name SET NOT NULL;
ALTER TABLE users DROP CONSTRAINT fn_not_null;

Schritt 5 — Lesezugriffe umstellen

Stellen Sie Code bereit, der statt user_name nun full_name liest.

Schritt 6 — Doppelte Schreibzugriffe beenden

Stellen Sie Code bereit, der nur noch in full_name schreibt.

Schritt 7 — Die alte Spalte löschen

Online möglich (nur eine Metadatenänderung):

ALTER TABLE users DROP COLUMN user_name;

Abwägung: Zeit und Komplexität

Aus einer einfachen Umbenennung werden 4–7 Deployments über mehrere Tage oder Wochen. Für nicht triviale Produktionssysteme ist dies der einzige sichere Weg.

Tabellen umbenennen

Ein ähnliches, aber schwierigeres Muster. Verwenden Sie VIEW als vorübergehenden Alias:

ALTER TABLE old_name RENAME TO new_name;
CREATE VIEW old_name AS SELECT * FROM new_name;
-- Deploy new code. Then drop the view.

Zusammenfassung

Das Umbenennen von Spalten ohne Ausfallzeit folgt dem Muster Expand → Migrate → Contract.

  • Neue Spalte hinzufügen
  • Doppelt schreiben
  • Daten in Batches nachtragen
  • Lesezugriffe umstellen
  • Schreibzugriffe in die alte Spalte beenden
  • Alte Spalte löschen

Schnelltest

Welche Phase folgt UNMITTELBAR auf das Deployment doppelter Schreibzugriffe in die alte und die neue Spalte?

Häufig gestellte Fragen

Ist die Lektion „Spalten ohne Ausfallzeit umbenennen“ kostenlos?

Ja — der vollständige Text von „Spalten ohne Ausfallzeit umbenennen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Spalten ohne Ausfallzeit umbenennen“?

Fügen Sie eine neue Spalte hinzu, schreiben Sie vorübergehend in beide Spalten, füllen Sie die neue Spalte nach, wechseln Sie die Lesezugriffe und löschen Sie die alte Spalte – das klassische Muster… Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Spalten ohne Ausfallzeit umbenennen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Online-Migrationen: Warum ALTER TABLE Sperren verursacht
  2. Konkurrierende Indizes (CREATE INDEX CONCURRENTLY)
  3. Spalten ohne Ausfallzeit umbenennen
  4. Tools: Flyway, Liquibase, Sqitch
← Zurück zu SQL Academy