Обновление таблиц через JSON — различия между версиями
Материал из ИбисоПедии
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
=== Получаем данные в виде JSON === | === Получаем данные в виде JSON === | ||
| − | select json_agg(row_to_json(e.*))::json | + | select json_agg(row_to_json(e.*))::json |
| − | from mm.action e | + | from mm.action e |
| − | where e.id in (7, 8) | + | where e.id in (7, 8) |
{{warning| Внимание в JSON не забываем править спецсимволы '\\', ""}} | {{warning| Внимание в JSON не забываем править спецсимволы '\\', ""}} | ||
=== Формируем UPDATE === | === Формируем UPDATE === | ||
| − | UPDATE | + | UPDATE |
mm.action nnn | mm.action nnn | ||
| − | SET | + | SET |
name = fff.name, | name = fff.name, | ||
def_rght_id = fff.def_rght_id, | def_rght_id = fff.def_rght_id, | ||
| Строка 19: | Строка 19: | ||
from json_populate_recordset(null::mm.action, | from json_populate_recordset(null::mm.action, | ||
/* здесь JSON, полученный на первом шаге */ | /* здесь 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"}}]' | + | '[{"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", |
| − | ) fff | + | "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 | + | where nnn.id=fff.id |
== Получение скриптов с помощью функции mm.dev_dml_json == | == Получение скриптов с помощью функции mm.dev_dml_json == | ||
| Строка 31: | Строка 33: | ||
| − | select mm.dev_dml_json('mm', 'v018', Null, 'idhvid') | + | select mm.dev_dml_json('mm', 'v018', Null, 'idhvid') |
[[Категория: Советы и рекомендации программирования MIS3 ]] | [[Категория: Советы и рекомендации программирования MIS3 ]] | ||
Версия 10:56, 13 апреля 2018
Получаем данные в виде 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')