我正在研究一个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;';
牺牲了最后两个参数的引号。
有什么办法可以保留引号,并且仍然摆脱这里的$$
?