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