# 第五部分:服务器编程

这一部分是关于用用户定义的函数、数据类型、触发器等扩展服务器功能的。这些都是高级主题,可能只有在理解了所有其他关于PostgreSQL的用户文档之后,才应该讨论这些主题。本部分后面的章节将介绍PostgreSQL发行版中可用的服务器端编程语言,以及有关服务器端编程语言的一般问题。至少要阅读本书前面的章节第38章(涵盖函数)然后再深入学习有关服务器端编程语言的内容。

目录

38.扩展SQL

38.1. 可扩展性的工作原理

38.2. PostgreSQL类型系统

38.3. 用户定义函数

38.4. 用户定义的过程

38.5. 查询语言(SQL)函数

38.6. 函数得载

38.7. 函数波动类别

38.8. 程序语言功能

38.9. 内部功能

38.10. C语言函数

38.11. 函数优化信息

38.12. 用户定义的聚合

38.13. 用户定义的类型

38.14. 用户定义的运算符

38.15. 操作员优化信息

38.16. 索引接口扩展

38.17. 将相关对象打包到扩展中

38.18. 扩建建筑基础设施

39.触发器

39.1. 触发行为概述

39.2. 数据更改的可见性

39.3. 用C语言编写触发器函数

39.4. 一个完整的触发器示例

40.事件触发器

40.1. 事件触发行为概述

40.2. 事件触发触发矩阵

40.3. 用C语言编写事件触发函数

40.4. 一个完整的事件触发器示例

40.5. 表重写事件触发器示例

41.规则体系

41.1. 查询树

41.2. 观点和规则体系

41.3. 物化视图

41.4. 规定插入, 使现代化删去

41.5. 规则和特权

41.6. 规则和命令状态

41.7. 规则与触发器

42.程序语言

42.1. 安装过程语言

43.PL/pgSQL——SQL过程语言

43.1. 概述

43.2. PL/pgSQL的结构

43.3. 声明

43.4. 表达

43.5. 基本陈述

43.6. 控制结构

43.7. 光标

43.8. 交易管理

43.9. 错误和消息

43.10. 触发功能

43.11. 引擎盖下的PL/pgSQL

43.12. 在PL/pgSQL中开发的技巧

43.13. 从Oracle PL/SQL进行移植

44.PL/Tcl-Tcl过程语言

44.1. 概述

44.2. PL/Tcl函数和参数

44.3. PL/Tcl中的数据值

44.4. PL/Tcl中的全局数据

44.5. 从PL/Tcl访问数据库

44.6. PL/Tcl中的触发器函数

44.7. PL/Tcl中的事件触发器函数

44.8. PL/Tcl中的错误处理

44.9. PL/Tcl中的显式子转换

44.10. 交易管理

44.11. PL/Tcl配置

44.12. Tcl过程名称

45.PL/Perl——Perl过程语言

45.1. PL/Perl函数和参数

45.2. PL/Perl中的数据值

45.3. 内置函数

45.4. PL/Perl中的全局值

45.5. 可信和不可信的PL/Perl

45.6. PL/Perl触发器

45.7. PL/Perl事件触发器

45.8. 引擎盖下的PL/Perl

46.PL/Python——Python过程语言

46.1. Python 2与Python 3

46.2. PL/Python函数

46.3. 数据值

46.4. 共享数据

46.5. 匿名代码块

46.6. 触发功能

46.7. 数据库访问

46.8. 显式子转换

46.9. 交易管理

46.10. 效用函数

46.11. 环境变量

47.服务器编程接口

47.1. 接口功能

47.2. 接口支持功能

47.3. 内存管理

47.4. 交易管理

47.5. 数据更改的可见性

47.6. 例子

48.后台工作进程

49.逻辑解码

49.1. 逻辑解码示例

49.2. 逻辑解码概念

49.3. 流复制协议接口

49.4. 逻辑解码SQL接口

49.5. 与逻辑解码相关的系统目录

49.6. 逻辑解码输出插件

49.7. 逻辑解码输出写入程序

49.8. 同步复制支持逻辑解码

49.9. 用于逻辑解码的大型事务流

49.10. 对逻辑解码的两阶段提交支持

50.复制进度跟踪