Migrationen

Erfahren Sie, wie Sie Datenbankmigrationen in Ihrer Anwendung erstellen und verwalten.

Hinweis: Dies sind Beispiel- bzw. Platzhalterinhalte zu Demonstrationszwecken.

Mit Datenbankmigrationen können Sie Änderungen an Ihrem Datenbankschema versionieren und sie konsistent über alle Umgebungen hinweg anwenden.

Eine Migration erstellen

Um eine neue Migration zu erstellen, verwenden Sie den folgenden Befehl:

pnpm --filter web supabase:db:diff

Dadurch wird im Verzeichnis apps/web/supabase/migrations eine neue Migrationsdatei erzeugt, die auf den Unterschieden zwischen Ihrer lokalen Datenbank und den Schemadateien basiert.

Migrationen anwenden

So wenden Sie Migrationen auf Ihre lokale Datenbank an:

pnpm --filter web supabase migrations up

Best Practices für Migrationen

  1. Testen Sie Migrationen immer zuerst lokal, bevor Sie sie in der Produktion anwenden
  2. Gestalten Sie Migrationen nach Möglichkeit umkehrbar, indem Sie DOWN-Anweisungen einfügen
  3. Verwenden Sie Transaktionen, um atomare Operationen sicherzustellen
  4. Fügen Sie Indizes hinzu für Fremdschlüssel und häufig abgefragte Spalten
  5. Nehmen Sie RLS-Richtlinien in dieselbe Migration auf, in der die Tabelle erstellt wird

Beispielmigration

-- Eine neue Tabelle erstellen
CREATE TABLE tasks (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  account_id UUID NOT NULL REFERENCES accounts(id) ON DELETE CASCADE,
  title TEXT NOT NULL,
  completed BOOLEAN DEFAULT false,
  created_at TIMESTAMPTZ DEFAULT now()
);

-- RLS hinzufügen
ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;

-- Richtlinien erstellen
CREATE POLICY "Users can view their account tasks"
  ON tasks FOR SELECT
  USING (account_id IN (SELECT get_user_accounts(auth.uid())));

Die Datenbank zurücksetzen

So setzen Sie Ihre lokale Datenbank vollständig mit dem neuesten Schema zurück:

pnpm supabase:web:reset

Dadurch werden alle Tabellen gelöscht und sämtliche Migrationen von Grund auf neu angewendet.