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
json_validdevuelve 1 o 0, que es justo lo que unCHECKquiere.json_typenombra la clase en una ruta: objeto, arreglo, entero, texto.- Indexar una ruta extraída vuelve una búsqueda JSON tan rápida como una columna.
Palabras clave y builtins usados aquí
ASCHECKCREATEFROMINDEXINSERTINTEGERINTOKEYNOTNULLONPRIMARYSELECTTABLETEXTVALUESowner
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.
Paso 4 de 5 en Escribir JSON; paso 7 de 14 en JSON y búsqueda.