JSON_SET在MariaDB的,不插入数据

MariaDB的文档,它说,JSON_SET插入或更新信息,而只是JSON_INSERT插入和JSON_REPLACE唯一替代品。JSON_SET在MariaDB的,不插入数据

我使用下面的代码,我需要插入的信息,如果它不存在,或者更新的,如果它已经存在。

的问题是,它仅更新,当它已经存在,并且它不会插入,如果它不存在。

MariaDB docs

UPDATE myTable SET config = JSON_SET(config, '$.person.name', 'zeca', '$.person.details.age', '87') WHERE id = 127 

如果 “详细信息”,在为myTable的 “配置” 领域已经存在, “时代” 将被注册。如果“详细信息”仍然是不存在的,我要注册details.age,但它没有注册。

回答:

我不能测试我的代码,但也许你能得到它的东西像这样工作

UPDATE myTable SET config = JSON_MERGE(config, '{"person": {}'), config = JSON_SET(config, '$.person.name', 'zeca', '$.person.details.age', '87') WHERE id = 127

回答:

调整了一句,因为你需要:

UPDATE `myTable` 

SET `config` = JSON_SET(`config`, '$.person.name', 'zeca'),

`config` = IF(JSON_EXISTS(`config`, '$.person.details') IS NOT NULL,

JSON_SET(

`config`,

'$.person.details',

JSON_OBJECT('age', 87)

),

JSON_INSERT(

`config`,

'$.person',

JSON_OBJECT('details',

JSON_OBJECT('age', 87)

)

)

)

WHERE `id` = 127;

见dbfiddle。

以上是 JSON_SET在MariaDB的,不插入数据 的全部内容, 来源链接: utcz.com/qa/258502.html

回到顶部