Устойчивость этого решения для обновления столбца массива PostGres с помощью SQL Server Linked Server - PullRequest
0 голосов
/ 28 марта 2020

У меня есть требование, когда моей SQL серверной процедуре необходимо обновить первый член массива в связанном столбце таблицы PostGres сервера. По сути, таблица PostGres имеет определенные цены столбцов (цифры c, 15,5) [], что означает, что содержимое имеет такой тип: {23.0000,0,0,0, ...}

В моем SQL -приводном приложении я обновляю цену, и мне нужно обновить ее в PostGres. Тем не менее, я действительно изо всех сил пытался найти способ использовать:

Update openquery(PGLinkedServer,'select prices[] from theTable where id=1') set prices[1]=24

Но в конце концов я нашел способ сделать это с исследованием выполнения удаленных процедур через openquery. Конечный результат таков:

select * from openquery(PGLinkedServer,
   'select 1 x; update theTable set prices[1]=24 where id=1')

Итак, моя первая проблема / вопрос - насколько это может быть стабильно? Особенности поведения не задокументированы: у вас должен вывод таблицы, и должен быть первым в запросе. Должен ли я быть обеспокоен тем, что это может сломаться в будущем обновлении SQLServer, PostGres или библиотеки, используемой для их связывания? Или эта возможность где-то задокументирована?

Второй вопрос - есть ли лучший способ обновить элемент массива PostGres table.column через соединение с сервером SQL Server?

Спасибо, ребята.

...