postgresql - How to copy bytea in postgres trigger? -
anyone can me how insert bytea table in postgres trigger?
create or replace function public.image_insert_trigger() returns trigger $body$declare dyn_sql text; tbname text; img text; begin img:=new.img; tbname:='t'||left(new.code,4); dyn_sql:='insert '||tbname||' (id,code,img) values ('||new.id||','||new.code||','||''''||img::bytea||''''||')'; execute dyn_sql; return null; end;$body$ language plpgsql volatile cost 100; alter function public.image_insert_trigger() owner postgres;
don't use string literals, use parameters
begin tbname :='t'||left(new.code,4); dyn_sql := 'insert '||quote_ident(tbname)||' (id,code,img) values ($1, $2, $3)'; execute dyn_sql using new.id, new.code, new.img; return null; end;
i prefer format()
function define dynamic sql makes actual sql easier read (at least me)
dyn_sql := format('insert %i (id,code,img) values ($1, $2, $3)', tbname);
Comments
Post a Comment