函数和触发器允许用户向后端服务器插入代码,这样其他用户可以在无意的情况下执行这些代码。 因此,两种机制都可以让用户相当隐蔽地给别人设置 "Trojan horse(木马)", 唯一的有效防护就是严格控制谁可以定义函数。
后端服务器里面运行的函数都是以数据库服务器守护进程的操作系统权限运行的。 如果所使用的编程语言允许无检查的内存访问,那么是可能修改服务器的内部数据结构也是可能的。 因此,除了其他问题外,这样的函数可以绕过任何系统访问控制。 允许这样访问的函数语言都被认为是"不可信的(untrusted)", PostgreSQL 只允许超级用户使用这样的语言书写函数。