Migraciones

Aprenda a crear y gestionar migraciones de base de datos en su aplicación.

Nota: Este es contenido de ejemplo/marcador de posición con fines de demostración.

Las migraciones de base de datos le permiten versionar los cambios en el esquema de su base de datos y aplicarlos de forma coherente en todos los entornos.

Crear una migración

Para crear una nueva migración, utilice el siguiente comando:

pnpm --filter web supabase:db:diff

Esto generará un nuevo archivo de migración en el directorio apps/web/supabase/migrations a partir de las diferencias entre su base de datos local y los archivos de esquema.

Aplicar migraciones

Para aplicar las migraciones a su base de datos local:

pnpm --filter web supabase migrations up

Buenas prácticas para migraciones

  1. Pruebe siempre las migraciones primero en local antes de aplicarlas en producción
  2. Haga que las migraciones sean reversibles siempre que sea posible, incluyendo sentencias DOWN
  3. Utilice transacciones para garantizar operaciones atómicas
  4. Añada índices para las claves foráneas y las columnas consultadas con frecuencia
  5. Incluya las políticas RLS en la misma migración en la que se crea la tabla

Ejemplo de migración

-- Crear una nueva tabla
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()
);

-- Añadir RLS
ALTER TABLE tasks ENABLE ROW LEVEL SECURITY;

-- Crear políticas
CREATE POLICY "Users can view their account tasks"
  ON tasks FOR SELECT
  USING (account_id IN (SELECT get_user_accounts(auth.uid())));

Restablecer la base de datos

Para restablecer por completo su base de datos local con el esquema más reciente:

pnpm supabase:web:reset

Esto eliminará todas las tablas y volverá a aplicar todas las migraciones desde cero.