如果存在特定的模式,我想运行一些sql脚本。这是我的尝试:
do $$
begin
if exists (select 1 from information_schema.schemata where schema_name = 'public')
then
ir ./script.sql
end if;
end
$$;
但我得到了这个错误:
$ psql my_database -f test.sql
psql:test.sql:8: ERROR: syntax error at or near ""
LINE 5: ir ./script.sql
没有if
语句的同一脚本可以工作,并且能够触发./script.sql
。
将script.sql
中的代码直接添加到if
语句中也可以,if
语法似乎没有任何问题。
如何有条件地触发SQL脚本?
在PL/pgSQL中不能这样做。
您可以用PL/PerlU或PL/Python编写一个函数来实现这一点,也可以安装PL/sh语言。