Обновление таблиц через JSON
Материал из ИбисоПедии
Версия от 10:56, 13 апреля 2018; Admin (обсуждение | вклад)
Получаем данные в виде JSON
select json_agg(row_to_json(e.*))::json from mm.action e where e.id in (7, 8)
| Внимание в JSON не забываем править спецсимволы '\\', "" |
Формируем UPDATE
UPDATE
mm.action nnn
SET
name = fff.name, def_rght_id = fff.def_rght_id, action_type_id = fff.action_type_id, img16_index = fff.img16_index, img32_index = fff.img32_index, param = fff.param from json_populate_recordset(null::mm.action, /* здесь JSON, полученный на первом шаге */
'[{"id":8,"name":"Статкарта - массове изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSHospChangeWOT", "img16":"img\\16\\tables_edit.png", "img32":"img\\32\\tables_edit32.png"}}, {"id":7,"name":"Амбулаторные талоны - массовое изменение","def_rght_id":1,"action_type_id":2,"img16_index":20,"img32_index":17,"param":{"FormClass":"TfmOMSAmbticketChangeWOT", "img16":"img\\16\\tables_edit.png", "img32":"img\\32\\tables_edit32.png"}}]' ) fff
where nnn.id=fff.id
Получение скриптов с помощью функции mm.dev_dml_json
Для облегчения существует специальная функция:
select mm.dev_dml_json('mm', 'action')
select mm.dev_dml_json('mm', 'v018', Null, 'idhvid')