我的要求是在执行触发器时执行类似(ls)或C程序的系统命令。有没有办法创建一个触发函数来解决这个问题。
答案 0 :(得分:1)
您可以编写触发器函数Python,Perl或Tcl,并且只要您使用该语言的"untrusted"版本,其中任何一个都可用于执行任意shell命令。 shell将在Postgres服务器进程的同一用户下运行(通常是“postgres”),因此您需要相应地设置权限。
例如,在运行CREATE EXTENSION plpythonu
之后,您可以使用LANGUAGE plpythonu
编写触发器函数,并通过调用例如运行命令来运行命令。 os.system()
请注意修改系统的任何命令,因为这些更改与数据库事务无关(因此您需要找到自己的方式来处理并发写入,事务回滚等)。