重构PL / pgSQL脚本以删除$$

时间:2019-07-12 08:04:09

标签: sql plpgsql

我正在研究一个Spring可以运行的数据库初始化脚本,并为postgres数据库创建一个模式。我面临与here所述的相同问题。导致异常的代码是:

create or replace function fn_protectadmin() returns trigger
language plpgsql
as $$
begin
    if OLD.id = 1 then
    raise exception 'Attempt to % protected row with id = ''%'' from table: ''%''', tg_op, old.id, tg_table_name;
    end if;
    return old;
end;
$$;

我一直在尝试重构代码以摆脱$$,但是我真的对SQL很不好。我唯一能想到的想法是:

create or replace function fn_protectadmin() returns trigger
language plpgsql
as
'begin
    if OLD.id = 1 then
    raise exception ''Attempt to % protected row with id = % from table: %'', tg_op, old.id, tg_table_name;
    end if;
    return old;
end;';

牺牲了最后两个参数的引号。

有什么办法可以保留引号,并且仍然摆脱这里的$$

0 个答案:

没有答案