Перейти к основному содержимому

dblink_build_sql_update

примечание

Эта страница переведена при помощи нейросети GigaChat.

dblink_build_sql_update – создает оператор UPDATE с использованием локального кортежа, заменяя значения полей первичного ключа альтернативными значениями, которые были предоставлены.

Синтаксис

dblink_build_sql_update(text relname,
int2vector primary_key_attnums,
integer num_primary_key_atts,
text[] src_pk_att_vals_array,
text[] tgt_pk_att_vals_array) returns text

Описание

dblink_build_sql_update может быть полезен для выборочной репликации локальной таблицы в удаленную базу данных. Она выбирает строку из локальной таблицы на основе первичного ключа, а затем создает команду SQL UPDATE, которая будет дублировать эту строку, но с заменой значений первичного ключа значениями в последнем аргументе. Чтобы создать точную копию строки, просто укажите одинаковые значения для последних двух аргументов. Команда UPDATE всегда присваивает все поля строки – основное отличие этой функции от dblink_build_sql_insert заключается в том, что предполагается, что целевая строка уже существует в удаленной таблице.

Аргументы

relname

: Имя локального отношения, например foo или myschema.mytab. Включите двойные кавычки, если имя содержит прописные буквы или специальные символы, например "FooBar", без кавычек строка будет преобразована в нижний регистр.

primary_key_attnums

: Номера атрибутов (основанные на 1) полей первичного ключа, например 1 2.

num_primary_key_atts

: Количество полей первичного ключа.

src_pk_att_vals_array

: Значения полей первичного ключа, которые будут использоваться для поиска локального кортежа. Каждое поле представлено в текстовой форме. Возникает ошибка, если нет локального ряда с этими значениями первичного ключа.

tgt_pk_att_vals_array

: Значения полей первичного ключа, которые должны быть размещены в результирующей команде UPDATE. Каждое поле представлено в текстовой форме.

Возвращаемое значение

Возвращает запрошенный оператор SQL в виде текста.

Примечания

Начиная с версии PostgreSQL 9.0, номера атрибутов в primary_key_attnums интерпретируются как логические номера столбцов, соответствующие положению столбца в SELECT * FROM relname. Предыдущие версии интерпретировали числа как физические позиции столбцов. Разница существует, если какие-либо столбцы слева от указанного столбца были удалены за время существования таблицы.

Примеры

SELECT dblink_build_sql_update('foo', '1 2', 2, '{"1", "a"}', '{"1", "b"}');
dblink_build_sql_update
-------------------------------------------------------------
UPDATE foo SET f1='1',f2='b',f3='1' WHERE f1='1' AND f2='b'
(1 row)