试图告诉我的MariaDB数据库更新json(长文本)列。如果路径存在,它可以正常工作。如果路径不存在并且路径是一维的,它也能正常工作。如果路径是多维的且不存在或部分存在,则会中断。
jsondata = {"firstname":"Bob","stats":{"height":"72","weight":"200"}}
UPDATE table SET jsondata = JSON_INSERT(jsondata, '$.lastname', 'Smith')
- Works
UPDATE table SET jsondata = JSON_INSERT(jsondata, '$.stats.hair', 'Brown')
- Works
UPDATE table SET jsondata = JSON_INSERT(jsondata, '$.stats.hair.color', 'Brown')
-不工作
UPDATE table SET jsondata = JSON_INSERT(jsondata, '$.car.make', 'Ford')
-不工作
是否有一个我不知道的命令会在没有路径的地方创建路径?
我尝试创建一个递归函数来分解周期上的路径,并将路径逐级插入json文档,但它崩溃了。
编辑:谁帮我解决这个问题,我就给谁寄20美元Zelle/Venmo。使用JSON_MERGE_PATCH()
函数
DEMO fiddle (MySQL)
DEMO fiddle (MariaDB)