内容提要
PostgreSQL 17 Beta 引入了 PL/pgSQL 的新功能,包括能够基于底层数据库对象声明数组类型,从而提高代码的可读性和可维护性。
延伸解读
新特性带来的编码方式变化
在 PostgreSQL 17 之前,声明基于表列或行类型的数组变量时,开发者必须手动查找并写出底层数据类型,无法直接使用 %TYPE 或 %ROWTYPE。新版本允许在 %TYPE 和 %ROWTYPE 后直接加 [] 来声明数组,使变量声明与数据库对象定义自动同步,减少了因表结构变更而需要修改代码的情况。
实际应用中的多种声明形式
文章示例展示了多种数组声明变体:基于表列的 %TYPE 数组、基于表的 %ROWTYPE 数组、基于已有变量的 %TYPE 数组、基于用户定义类型及其属性的数组等。这些形式覆盖了常见的开发场景,让开发者可以根据需要灵活选择,而不必再为每种情况手动拼写类型。
对代码可读性与维护性的提升
通过直接引用底层数据库对象的类型,数组声明变得更加简洁和直观。代码中不再出现重复的硬编码类型,降低了因类型不匹配或遗漏更新而引入错误的风险。这种改进有助于团队协作和长期维护,尤其是在数据库模式频繁演进的迁移项目中。
Q&A
PostgreSQL 17 Beta 什么时候发布的?
PostgreSQL 17 Beta 于2024年5月23日发布。
PL/pgSQL 在 PostgreSQL 17 中有哪些新特性?
PL/pgSQL 新增了允许表示非数组类型数组的 %TYPE 和 %ROWTYPE 规范,以及直接声明基于列的原始类型的数组类型。
如何在 PostgreSQL 17 中声明数组变量?
在 PostgreSQL 17 中,可以使用 %TYPE 和 %ROWTYPE 来声明基于底层数据库对象的数组变量。
PostgreSQL 17 的新语法如何提高代码可读性?
新语法使得声明 %TYPE 或 %ROWTYPE 数组变得更加高效,从而提升了代码的可读性和可维护性。
在 PostgreSQL 17 之前,声明数组变量时有什么限制?
在 PostgreSQL 17 之前,声明数组变量时无法使用 %TYPE 或 %ROWTYPE 引用底层数据库类型,必须手动指定数据类型。
PostgreSQL 17 中的数组声明示例是什么?
示例代码展示了如何使用新特性声明基于底层表及其列数据类型的数组类型。