pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
目录
PL/Tcl 是 PostgreSQL 数据库系统的一种可加载过程语言,可以使用 Tcl 语言编写函数和触发器过程。
本包最初由 Jan Wieck 编写。
除某些限制外,PL/Tcl 提供了函数编写者在 C 语言中所具备的大部分能力。
一个良性的限制是,所有内容都在一个安全的 Tcl 解释器中执行。除了安全 Tcl 受限的命令集之外,只提供了少数通过 SPI 访问数据库以及通过elog()发出消息的命令。没有办法访问数据库后端的内部,也无法像 C 函数那样在 PostgreSQL 用户 ID 的权限下获得操作系统级访问。 因此,任何非特权数据库用户都可以被允许使用这种语言。
另一个实现上的限制是,Tcl 过程不能 用来为新数据类型创建输入/输出函数。
有时需要编写不受安全 Tcl 限制的 Tcl 函数。例如,可能希望某个 Tcl 函数能够发送邮件。为处理这类情况,PL/Tcl 有一个叫做 PL/TclU 的变体(表示不受信任的 Tcl)。除了使用完整的 Tcl 解释器之外,它与前者是完全相同的语言。如果使用 PL/TclU,就必须把它安装为一种不受信任的过程语言,这样就只有数据库超级用户才能在其中创建函数。PL/TclU 函数的编写者必须注意确保该函数不会被用来做任何不希望发生的事情,因为它能够执行任何以数据库管理员身份登录的用户所能做的事情。
如果在安装过程的配置步骤中指定了 Tcl/Tk 支持,则 PL/Tcl 和 PL/TclU 调用处理器的 共享对象代码会自动构建并安装到 PostgreSQL 的库目录中。要在某个特定数据库中安装 PL/Tcl 和/或 PL/TclU,请使用 createlang 脚本,例如 createlang pltcl 或 dbnamecreatelang pltclu 。dbname
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。