Я хочу исправить или проверить ключи для объекта JSON в PostgreSQL (v10.7).
Например, у меня есть объект JSON с именем service_config, который выглядит так:
{"con_type": "Foo", "capacity": 2, "capacity_unit": "gbps"}
И у меня есть таблица:
id(serial) service_name(char) service_type(char) service_config(JSON)
-----------+---------------------+---------------------+---------------------
1 | com | ethernet | {"con_type": "ddc", "capacity": 2, "capacity_unit": "gbps"}
2 | res | gpon | {"con_type": "ftth", "capacity": 1, "capacity_unit": "gbps"}
Теперь всякий раз, когда я вставляю строку в таблицу, я хочу убедиться или подтвердить, что столбец service_config содержит все ключи, упомянутые выше, ни больше, ни меньше. Однако для ключей может быть нулевое значение.
Возможно ли это в Postgres и/или есть ли лучший способ сделать это?
Возможные решения:
1- Проверьте service_config в бэкэнд-API и убедитесь, что все ключи есть. (сейчас есть и работает)
2- Напишите функцию в Postgres для проверки service_config при вставке и обновлении. (выполнимо, но утомительно)
Ограничение: я не могу добавить какое-либо расширение в Postgres.