相关疑难解决方法(0)

创建引用不存在的表或列的SQL函数(尚)

我想通过psql在空数据库中加载一些SQL函数:

psql -d my_database -f fuctions.sql --set ON_ERROR_STOP=1 
Run Code Online (Sandbox Code Playgroud)

我使用--set ON_ERROR_STOP=1是因为如果脚本包含错误,我希望psql失败.

内容functions.sql是:

CREATE or REPLACE FUNCTION test_function() RETURNS INT AS $$
  SELECT id from test_table;
$$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)

我的问题是,psql检查test_table加载函数时是否存在并因此错误而失败:

ERROR:  relation "test_table" does not exist LINE 2: SELECT id from test_table;
Run Code Online (Sandbox Code Playgroud)

但我不希望psql检查表是否存在,因为我稍后会创建此表.

以下解决方法可行,但我无法使用它们:

  • 忽略错误.如果脚本包含ie sql语法错误,我希望psql退出时出错.
  • 使用plpgsql函数而不是sql.我当然可以,但简单的sql函数往往是最好的选择.
  • 首先创建表.我的真实场景实际上比这个例子更复杂.

postgresql plpgsql sql-function psql

2
推荐指数
1
解决办法
1653
查看次数

标签 统计

plpgsql ×1

postgresql ×1

psql ×1

sql-function ×1