Ce face JSON_SCHEMA_VALID()
JSON_SCHEMA_VALID() returnează 1 dacă documentul respectă schema (tipuri, câmpuri obligatorii, intervale) și 0 altfel. Poate fi folosit într-o constrângere CHECK.
JSON_SCHEMA_VALIDATION_REPORT() returnează un raport JSON cu motivul eșecului.
Parametri
| Parametru | Descriere |
|---|---|
schema |
Schema JSON (standardul Draft 4). |
document |
Documentul verificat. |
Ce returnează
1/0, respectiv un raport JSON.
Exemple
Exemplul 1: Câmp obligatoriu lipsă
SET @schema = '{"type": "object", "required": ["nume"], "properties": {"varsta": {"type": "integer", "minimum": 0}}}';
SELECT JSON_SCHEMA_VALID(@schema, '{"nume": "Ana", "varsta": 31}') AS valid,
JSON_SCHEMA_VALID(@schema, '{"varsta": 31}') AS fara_nume;
Rezultat
+-------+-----------+
| valid | fara_nume |
+-------+-----------+
| 1 | 0 |
+-------+-----------+
Exemplul 2: Motivul exact
SELECT JSON_UNQUOTE(JSON_EXTRACT(
JSON_SCHEMA_VALIDATION_REPORT('{"type": "object", "required": ["nume"]}', '{"oras": "Iasi"}'),
'$.reason'
)) AS motiv;
Rezultat
+------------------------------------------------------------------------------------------+
| motiv |
+------------------------------------------------------------------------------------------+
| The JSON document location '#' failed requirement 'required' at JSON Schema location '#' |
+------------------------------------------------------------------------------------------+
Greșeli frecvente
- Validezi doar în aplicație. O constrângere
CHECK (JSON_SCHEMA_VALID(...))pe coloană garantează că nici alte programe nu salvează date greșite.
Comenzi înrudite
JSON_VALID(): Verifică dacă un text este JSON valid (1 sau 0).JSON_TYPE(): Tipul unei valori JSON: OBJECT, ARRAY, STRING, INTEGER, DOUBLE, BOOLEAN, NULL etc.