typestar

Mantener honesta una columna JSON en SQL

Una columna TEXT guardará feliz un documento a medio escribir, salvo que la frenes.

CREATE TABLE settings (
    id INTEGER PRIMARY KEY,
    doc TEXT NOT NULL CHECK (JSON_VALID(doc)),
    owner TEXT NOT NULL
);

CREATE INDEX settings_theme
    ON settings (JSON_EXTRACT(doc, '$.theme'));

INSERT INTO settings (doc, owner)
VALUES ('{"theme":"dracula","tabs":4}', 'ada');

SELECT
    JSON_TYPE(doc, '$.tabs') AS tabs_type,
    doc ->> '$.theme' AS theme
FROM settings;

Cómo funciona

  1. json_valid devuelve 1 o 0, que es justo lo que un CHECK quiere.
  2. json_type nombra la clase en una ruta: objeto, arreglo, entero, texto.
  3. Indexar una ruta extraída vuelve una búsqueda JSON tan rápida como una columna.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
358
Tokens
76
Ritmo de tres estrellas
95 tpm

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

Escribe este fragmento

Paso 4 de 5 en Escribir JSON; paso 7 de 14 en JSON y búsqueda.

← Anterior Siguiente →