dblink_build_sql_insert
Эта страница переведена при помощи нейросети GigaChat.
dblink_build_sql_insert – создает оператор INSERT с использованием локального кортежа, заменяя значения полей первичного ключа альтернативными значениями, которые были предоставлены.
Синтаксис
dblink_build_sql_insert(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_insert может быть полезен для выборочной репликации локальной таблицы в удаленную базу данных. Она выбирает строку из локальной таблицы на основе первичного ключа, а затем создает команду 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
Значения полей первичного ключа, которые должны быть размещены в результирующей команде INSERT. Каждое поле представлено в текстовой форме.
Возвращаемое значение
Возвращает запрошенную инструкцию SQL в виде текста.
Примечания
Начиная с версии PostgreSQL 9.0, номера атрибутов в primary_key_attnums интерпретируются как логические номера столбцов, соответствующие положению столбца в SELECT * FROM relname. Предыдущие версии интерпретировали числа как физические позиции столбцов. Разница существует, если какие-либо столбцы слева от указанного столбца были удалены за время существования таблицы.
Примеры
SELECT dblink_build_sql_insert('foo', '1 2', 2, '{"1", "a"}', '{"1", "b''a"}');
dblink_build_sql_insert
--------------------------------------------------
INSERT INTO foo(f1,f2,f3) VALUES('1','b''a','1')
(1 row)