任何可以帮我解决如何在postgres触发器中从另一个表中插入bytea的人?
margin-top: 50px; margin-left: 50px
答案 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;