В таблице PostgreSQL 9.5 у меня есть столбец integer
social
.Обновление целочисленного столбца из члена jsonb не выполняется: column имеет тип integer, но выражение имеет тип jsonb
Когда я пытаюсь обновить его в хранимой процедуре приведены следующие данные в формате JSON (массив с 2-х объектов, каждый из которых имеет «социальный» ключ) в in_users
переменной типа jsonb
:
'[{"sid":"12345284239407942","auth":"ddddc1808197a1161bc22dc307accccc",**"social":3**,"given":"Alexander1","family":"Farber","photo":"https:\/\/graph.facebook.com\/1015428423940942\/picture?type=large","place":"Bochum, Germany","female":0,"stamp":1450102770}, {"sid":"54321284239407942","auth":"ddddc1808197a1161bc22dc307abbbbb",**"social":4**,"given":"Alxander2","family":"Farber","photo":null,"place":"Bochum, Germany","female":0,"stamp":1450102800}]'::jsonb
Тогда следующий код не удается:
FOR t IN SELECT * FROM JSONB_ARRAY_ELEMENTS(in_users)
LOOP
UPDATE words_social SET
social = t->'social',
WHERE sid = t->>'sid';
END LOOP;
с сообщением об ошибке:
ERROR: column "social" is of type integer but expression is of type jsonb
LINE 3: social = t->'social',
^
HINT: You will need to rewrite or cast the expression.
Я попытался изменить эту строку:
social = t->'social'::int,
, но затем я получаю ошибку:
ERROR: invalid input syntax for integer: "social"
LINE 3: social = t->'social'::int,
^
Почему PostgreSQL не признают, что данные integer
?
От JSON-TYPE-MAPPING-TABLE У меня создалось впечатление, что номер JSON будет автоматически преобразован в числовой тип PostgreSQL.
Я отвалил последнего изменения, которые эффективно добавлен новый вопрос. Пожалуйста, задайте новый вопрос, если он еще неясен. –