系统表 pg_pltemplate 为过程语言存储"模板"信息。 一个语言的模板允许该语言可以在某个数据库里使用简单的 CREATE LANGUAGE 命令创建, 而不许要声明实现细节。
和许多系统表不一样,pg_pltemplate 是在集群里的所有数据库之间共享的: 每个集群只有一个 pg_pltemplate 的拷贝,而不是每个数据库一个。 这样就允许这些信息在需要时每个数据库都可以访问。
Table 42-26. pg_pltemplate 字段
名字 | 类型 | 引用 | 描述 |
---|---|---|---|
tmplname | name | 这个模板所服务的语言的名字 | |
tmpltrusted | boolean | 如果语言被人为是可信的,则为真 | |
tmplhandler | text | 调用句柄函数的名字 | |
tmplvalidator | text | 校验函数的名字,如果没有则为 NULL | |
tmpllibrary | text | 实现语言的共享库的路径 | |
tmplacl | aclitem[] | 模板的访问权限(未用) |
目前还没有任何命令可以用语操作过程语言模板;要修改内置的信息, 超户必须使用普通的 INSERT,DELETE,或者 UPDATE 命令修改该表。 将来版本的 PostgreSQL 有可能提供一些命令来修改这些内容, 以便更清晰些。
在实现的时候,tmplacl 字段将提供对模板自身的访问控制 (也就是使用它创建一个语言的权限),而不是对那些从模板创建的语言的访问控制。