Обновить запрос столбца JSON с массивом объектов в MySQL с помощью функции json - PullRequest
0 голосов
/ 01 апреля 2020
{
  "transaction_states": {
    "states": [
      {
        "status": "false",
        "created_on": "2020-03-28 17:05:45",
        "state_name": "fee-calculation",
        "updated_on": "2020-03-29 16:16:45",
        "reconciliation_process": null
      },
      {
        "status": "false",
        "created_on": "2020-03-28 17:05:45",
        "state_name": "fee-calculation1",
        "updated_on": "2020-03-28 16:05:45",
        "reconciliation_process": null
      }
    ],
    "created_on": "2020-04-01 05:43:33",
    "updated_on": "2020-04-01 06:55:24"
  }
}

Я хочу обновить JSON, хочу добавить новый

" {
    "status": "false",
    "created_on": "2020-03-28 17:05:45",
    "state_name": "fee-calculation2",
    "updated_on": "2020-03-28 16:05:45",
    "reconciliation_process": null
  }"

после 2-го json проверки объекта, вывод будет после обновления

{
  "transaction_states": {
    "states": [
      {
        "status": "false",
        "created_on": "2020-03-28 17:05:45",
        "state_name": "fee-calculation",
        "updated_on": "2020-03-29 16:16:45",
        "reconciliation_process": null
      },
      {
        "status": "false",
        "created_on": "2020-03-28 17:05:45",
        "state_name": "fee-calculation1",
        "updated_on": "2020-03-28 16:05:45",
        "reconciliation_process": null
      },
    {
        "status": "false",
        "created_on": "2020-03-28 17:05:45",
        "state_name": "fee-calculation2",
        "updated_on": "2020-03-28 16:05:45",
        "reconciliation_process": null
      }
    ],
    "created_on": "2020-04-01 05:43:33",
    "updated_on": "2020-04-01 06:55:24"
  }
}

используя приведенный ниже запрос, который можно обновить, но нужно передать индекс массива статически

UPDATE txn SET TRANSACTION_STATES = 
JSON_SET(COALESCE(TRANSACTION_STATES,JSON_OBJECT('states', 
JSON_ARRAY())),'$.transaction_states.states[2]',("state-name","fee- 
calculation2","created-on","2020-03-28 17:05:45","updated-on","2020- 
03-28 16:05:45","status","false"))  WHERE id = 'C0F998D';

здесь $.transaction_states.states[2] - 2 - это индекс, куда вставлен объект JSON, любой может помочь мне в этом, так как индекс будет Dynami c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...