0

動的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"(surrogate) VALUES(ed520ad0-5aba-11e2-961b-1c4bd605a98d) Syntaxerror: »aba« that is in my uid

動的 sql を使用しない場合、このテーブルに uuid を追加することができます。このエラーが発生する理由を教えてください。ありがとうございました

4

1 に答える 1

1

select最も簡単な方法は、 to を文字列内に移動することです。

BEGIN
tablename:=tblname;
execute 'INSERT INTO public."'||tablename||'"(surrogate) select uuid_generate_v1()';
END
于 2013-01-09T15:22:22.010 に答える