softmixx background

JSON Datentyp in MariaDB

Datenbanken

JSON_REPLACE in MariaDB verwenden

[ 29.04.2021 | Alex]
Seit Version 10.2 werden in MariaDB JSON Datentypen unterstützt. Das befreit uns endlich vom starren Konzept der strukturierten Daten einer klassischen SQL Tabelle. In diesem Beitrag zeige ich ein kleines Beispiel, wie mit der Funktion JSON_REPLACE das Element eines JSON Objekts in einer MariaDB Tabelle direkt geändert werden kann.

In manch früheren Projekten habe ich die Einschränkung durch Serialisierung von Datenobjekten und der Speicherung des kompletten Objekts in einer BLOB Spalte umgangen. Das ist jetzt nicht mehr notwendig und sogar kontraproduktiv, denn mit der nativen JSON Unterstützung durch MariaDB haben wir auch entsprechende CRUD Funktionen zur direkten Ansprache der JSON Daten.

Hier ein Beispiel aus einem meiner Projekte, bei dem die Tabelle areas mit einer JSON Spalte data erstellt wurde:

CREATE TABLE IF NOT EXISTS areas
( id CHAR(64) NOT NULL,
  datetime TIMESTAMP,
  status TINYINT DEFAULT 0,
  data JSON,
  CONSTRAINT id_index PRIMARY KEY (id)
);

Es ist nicht notwendig zur Änderung eines Elements in dem JSON Objekt zuerst das data Objekt zu laden, die Änderung vorzunehmen und anschließend den geänderten Inhalt wieder in die Tabelle zu schreiben.

Vielmehr läßt sich durch die MariaDB Funktion JSON_REPLACE eine Eigenschaft des JSON Objekts auch direkt ändern:

update areas set data=JSON_REPLACE(data, '$.population_per_qkm', 261) where id='994ea4c03577b64ee930...';

Mit dieser Update Anweisung wird die Eigenschaft population_per_qkm des JSON Objekts auf den Wert 261 gesetzt.