dblink_build_sql_update — 使用本機 tuple 建構 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
用於查找本機 tuple 的主鍵欄位的值。每個欄位都以文字形式表示。如果沒有具有這些主鍵值的本機列,則會擲回錯誤。
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)
如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。