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
- Agrega primero la columna, así el código viejo sigue andando mientras el nuevo la llena.
- Rellena con un solo
UPDATEy luego agrega la restricción que los datos ya cumplen. - Envuelve todo en una transacción: media migración es peor que ninguna.
Palabras clave y builtins usados aquí
ADDALTERASBEGINBYCASECOLUMNCOMMITCOUNTCREATEDEFAULTELSEENDFROMGROUPINDEXINTEGERNOTNULLONORDERSELECTSETTABLETHENUPDATEWHEN
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.
Paso 2 de 2 en Cambiar un esquema; paso 14 de 16 en Esquema y restricciones.