PostgreSQL dblink_build_sql_update

2021-09-16 15:40 更新

dblink_build_sql_update — 使用一個(gè)本地元組構(gòu)建一個(gè) 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) 返回 text

描述

dblink_build_sql_update在選擇性地將一個(gè)本地表復(fù)制到一個(gè)遠(yuǎn)程數(shù)據(jù)庫時(shí)很有用。它從本地表基于主鍵選擇一行,并且接著構(gòu)建一個(gè) SQL UPDATE命令來復(fù)制該行,但是其中的主鍵值被替換為最后一個(gè)參數(shù)中的值(要?jiǎng)?chuàng)建該行的一個(gè)準(zhǔn)確拷貝,只要為最后兩個(gè)參數(shù)指定相同的值)。UPDATE命令總是為該行的所有域賦值 — 這個(gè)函數(shù)與dblink_build_sql_insert之間的主要區(qū)別是它假定目標(biāo)行已經(jīng)存在于遠(yuǎn)程表中。

參數(shù)

relname

一個(gè)本地關(guān)系的名稱,例如foo或者myschema.mytab。如果該名稱是大小寫混合的或包含特殊字符,要包括雙引號,例如"FooBar";如果沒有引號,字符串將被折疊到小寫形式。

primary_key_attnums

主鍵域的屬性號(從 1 開始),例如1 2。

num_primary_key_atts

主鍵域的數(shù)量。

src_pk_att_vals_array

要被用來查找本地元組的主鍵域值。每一個(gè)域都被表示為文本形式。如果沒有行具有這些主鍵值,則拋出一個(gè)錯(cuò)誤。

tgt_pk_att_vals_array

要用在結(jié)果UPDATE命令中的主鍵域值。每一個(gè)域都被表示為文本形式。

返回值

將要求的 SQL 語句返回為文本。

注解

PostgreSQL 9.0 開始,primary_key_attnums中的屬性號被解釋為邏輯列號,對應(yīng)于列在SELECT * FROM relname中的位置。之前的版本將屬性號解釋為物理列位置。如果指示出的列的左邊有任意列在該表的生存期內(nèi)被刪除,這兩種解釋就有區(qū)別。

例子

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)
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號