JSON的数据更新不起作用(MySQL)

时间:2016-08-22 07:35:14

标签: mysql json database

所以我在数据库中有一个如下所示的表:

分类

idCategory |数据

" idCategory"列是AUTO_INCREMENT,数据字段是JSON。 我将数据存储在表中,如下所示:

1, {"CategoryNames": {"DE": "Wirtschaft", "EN": "Economy"}}
2, {"CategoryNames": {"DE": "Geschichte", "EN": "History"}}

理念是,以不同的语言存储类别的名称。我最好需要" CategoryNames"标签,所以我可以添加其他属性,如"难度"等等,以后不会影响语言。

我想要做的是在Tag" CategoryNames"下添加其他语言。不删除或替换现有的。

所以看起来像这样的事情

2, {"CategoryNames": {"DE": "Geschichte", "EN": "History", "FR" : "Histoire"}}

我用JSON_INSERT尝试过这样的事情:

UPDATE phpframework.category SET data = JSON_INSERT(data, "$.CategoryNames", JSON_OBJECT('FR', 'Histoire')) WHERE idCategory = 2;

但没有任何反应,专栏保持不变。使用JSON_SET,它只是替换我现有的语言。我也试过JSON_ARRAY_APPEND但是它看起来像这样:

{"CategoryNames": [{"DE": "Geschichte", "EN": "History"}, {"EN": "Math"}]}

有谁知道正确的MYSQL命令?

1 个答案:

答案 0 :(得分:1)

您不想插入整个对象,而是想在现有对象中设置属性。

UPDATE phpframework.category 
SET data = JSON_INSERT(data, "$.CategoryNames.FR", 'Histoire') 
WHERE idCategory = 2;

如果您希望替换已存在的属性,也可以使用JSON_SET代替JSON_INSERT