dblink_build_sql_insert
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)