在Postgres的execute语句中使用$$

时间:2017-12-14 04:44:28

标签: postgresql

我有一个像

这样的功能块
DO $$
DECLARE tran_year RECORD;
BEGIN
   FOR tran_year IN SELECT * FROM tbale1 loop
       EXECUTE 'ALTER TABLE mytable ADD CONSTRAINT unique_cons$$aaf1c86 UNIQUE (samplecol)';
   END LOOP;
END $$;
在Postgres中,当我试图执行这个块时,我遇到了一个问题:ERROR:syntax error at or near "aaf1c86"。 我还需要在约束名称中使用$$。有任何想法克服这个错误

1 个答案:

答案 0 :(得分:1)

As documented in the manual如果使用相同的序列来结束字符串文字,则可以使用$符号之间的任何字符序列。

所以只需在外面使用不同的$$

DO $doblock$
DECLARE tran_year RECORD;
BEGIN
   FOR tran_year IN SELECT * FROM tbale1 loop
       EXECUTE 'ALTER TABLE mytable ADD CONSTRAINT unique_cons$$aaf1c86 UNIQUE (samplecol)';
   END LOOP;
END $doblock$;