Postgresql 如何在postgres中有条件地删除数据库?

Postgresql 如何在postgres中有条件地删除数据库?,postgresql,plpgsql,Postgresql,Plpgsql,虽然解决了有条件地删除表的问题,但它不适用于删除数据库,因为: ERROR: DROP DATABASE cannot be executed from a function 我想删除一个数据库,但前提是它没有用户表。 如果我不能从函数执行任何类型的,我如何执行它?您首先必须连接到数据库,计算表数,连接到不同的数据库(例如postgres),取消每个人与数据库的连接,终止所有数据库会话并运行DROP TABLE函数问题是事务中不允许的DROP database的子集。函数在事务中运行,因此出

虽然解决了有条件地删除表的问题,但它不适用于删除数据库,因为:

ERROR:  DROP DATABASE cannot be executed from a function
我想删除一个数据库,但前提是它没有用户表。
如果我不能从函数执行任何类型的
,我如何执行它?

您首先必须连接到数据库,计算表数,连接到不同的数据库(例如
postgres
),取消每个人与数据库的连接,终止所有数据库会话并运行
DROP TABLE

函数问题是事务中不允许的
DROP database
的子集。函数在事务中运行,因此出现错误。这将是你需要在博士后之外使用脚本来完成的事情。因此,我能做的最好的事情就是将
IF
控件从postgres脚本移到宿主shell脚本中;然后我可以要求psql无条件地删除数据库