在postgresql中执行系统命令

时间:2016-02-04 06:30:36

标签: c postgresql shell unix rdbms

我的要求是在执行触发器时执行类似(ls)或C程序的系统命令。有没有办法创建一个触发函数来解决这个问题。

1 个答案:

答案 0 :(得分:1)

您可以编写触发器函数PythonPerlTcl,并且只要您使用该语言的"untrusted"版本,其中任何一个都可用于执行任意shell命令。 shell将在Postgres服务器进程的同一用户下运行(通常是“postgres”),因此您需要相应地设置权限。

例如,在运行CREATE EXTENSION plpythonu之后,您可以使用LANGUAGE plpythonu编写触发器函数,并通过调用例如运行命令来运行命令。 os.system()

请注意修改系统的任何命令,因为这些更改与数据库事务无关(因此您需要找到自己的方式来处理并发写入,事务回滚等)。