如何在postgres触发器中复制bytea?

时间:2017-08-21 04:03:28

标签: postgresql

任何可以帮我解决如何在postgres触发器中从另一个表中插入bytea的人?

margin-top: 50px; margin-left: 50px

2 个答案:

答案 0 :(得分:2)

不要使用字符串文字,使用参数

begin
  tbname :='t'||left(NEW.code,4);
  dyn_sql := 'INSERT INTO '||quote_ident(tbname)||' (id,code,img) VALUES ($1, $2, $3)';
  execute dyn_sql 
     using new.id, new.code, new.img;
  return NULL;
END;

我更喜欢format()函数来定义动态SQL,因为它使实际的SQL更容易阅读(至少对我而言)

dyn_sql := format('INSERT INTO %I (id,code,img) VALUES ($1, $2, $3)', tbname);

答案 1 :(得分:1)

传递非内联参数应该更容易:

dyn_sql:='INSERT INTO '||tbname||' (id,code,img) VALUES ($1,$2,$3)';    
execute dyn_sql using NEW.id, NEW.code, img::bytea;