typestar

Una migración de principio a fin en SQL

Cambiar una tabla viva son cuatro sentencias pequeñas, cada una re-ejecutable.

BEGIN;

ALTER TABLE customers
ADD COLUMN plan_tier INTEGER NOT NULL DEFAULT 0;

UPDATE customers
SET plan_tier = (
        CASE plan
            WHEN 'basic' THEN 1
            WHEN 'pro' THEN 2
            WHEN 'enterprise' THEN 3
            ELSE 0
        END
    );

CREATE INDEX customers_by_tier
    ON customers (plan_tier);

SELECT
    plan,
    plan_tier,
    COUNT(*) AS customers
FROM customers
GROUP BY plan, plan_tier
ORDER BY plan_tier;

COMMIT;

Cómo funciona

  1. Agrega primero la columna, así el código viejo sigue andando mientras el nuevo la llena.
  2. Rellena con un solo UPDATE y luego agrega la restricción que los datos ya cumplen.
  3. Envuelve todo en una transacción: media migración es peor que ninguna.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
27
Caracteres a escribir
375
Tokens
72
Ritmo de tres estrellas
95 tpm

Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 45 segundos.

Escribe este fragmento

Paso 2 de 2 en Cambiar un esquema; paso 14 de 16 en Esquema y restricciones.

← Anterior Siguiente →