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)