Я хочу разобрать JSON-формат в MYSQL Trigger
{"multicast_id":67784038XXXXXX,"success":1,"failure":0,"canonical_ids":0,"results": [{"message_id":"0:13XXXX280085815%XXXXXXXXX"}]}
Фактически я получаю это как ответ от одного из своих приложений и сохраняю его в одной таблице ( tbl1 ), поэтому я пытаюсь создать один триггер в этой таблице ( tbl1 ) и проанализировать выше ответ и вставить соответствующие записи в другую таблицу ( tbl2 )
Необходимо разобрать выше json-формат в MYSQL Trigger, чтобы я получил все параметры отдельно. Как это можно сделать?
Вы можете установить common_schema . Тогда вы сможете сделать что-то вроде этого:
select common_schema.extract_json_value(d.table1,'/multicast_id') as multicase_id, common_schema.extract_json_value(d.table1,'/success') as success, common_schema.extract_json_value(d.table1,'/failure') as failure, common_schema.extract_json_value(d.table1,'/canonical_ids') as canonical_ids, common_schema.extract_json_value(d.table1,'/results') as results, common_schema.extract_json_value(d.table1,'/message_id') as message_id from database d;
Добавьте код в модель базы данных вашего приложения. PHP имеет приятную встроенную функцию для разбора JSON, тогда как для MySql это не работа.
В любом случае, хранение сырого JSON в таблице Bad, потому что оно побеждает саму цель реляционной базы данных. Если вы не рассматриваете строку JSON как необработанную строку и не заботитесь о ее значении на уровне базы данных. Похоже, это не так.
Поэтому даже не стоит хранить строку JSON. Разберите его с PHP и сохраните данные прямо в свой tbl2
. Восстановление строки JSON из таблицы с помощью PHP является простым и практически мгновенным (по сравнению со временем, которое потребуется для восстановления данных из базы данных).