通过动态sql将UUID添加到表中时出错

时间:2013-01-09 15:18:37

标签: postgresql plpgsql

我想使用动态sql将uuid添加到表中.Hier是我的代码:

CREATE OR REPLACE FUNCTION "Surrogate_gen"(tblname text) RETURNS void AS
$BODY$DECLARE 
uid UUID;
tablename text;
BEGIN
uid:=(select uuid_generate_v1());
tablename:=tblname;
execute 'INSERT INTO public."'||tablename||'"(surrogate) VALUES('||uid||')';
END
$BODY$
LANGUAGE plpgsql

但是发生了这样的错误: INSERT INTO public。“produkt”(代理人)VALUES(ed520ad0-5aba-11e2-961b-1c4bd605a98d) 语法错误:我的uid中的»aba«

如果我不使用Dynamic sql可以在此表中添加uuid。请问我为什么会出现这个错误? 谢谢

1 个答案:

答案 0 :(得分:1)

最简单的方法是将select移到字符串中:

BEGIN
tablename:=tblname;
execute 'INSERT INTO public."'||tablename||'"(surrogate) select uuid_generate_v1()';
END