2024年9月26日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本:11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4

SPI_modifytuple

SPI_modifytuple — 通过替换给定行的选定字段来创建一行

概要

HeapTuple SPI_modifytuple(Relation rel, HeapTuple row, int ncols,
                          int * colnum, Datum * values, const char * nulls)

描述

SPI_modifytuple 通过替换选定列的新值来创建新行,并在其他位置复制原始行的列。输入行不会被修改。新行在上一级执行器上下文中返回。

此函数只能在连接到 SPI 时使用。否则,它将返回 NULL 并将 SPI_result 设置为 SPI_ERROR_UNCONNECTED

参数

Relation rel

仅用作行的行描述符的来源。(传递关系而不是行描述符是一个错误特征。)

HeapTuple row

要修改的行

int ncols

要更改的列数

int * colnum

长度为 ncols 的数组,包含要更改的列号(列号从 1 开始)

Datum * values

长度为 ncols 的数组,包含指定列的新值

const char * nulls

长度为 ncols 的数组,描述哪些新值为 null

如果 nullsNULL,则 SPI_modifytuple 假设没有新值为 null。否则,nulls 数组的每个条目如果对应的新值为非 null,则应为 ' ',如果对应的新值为 null,则应为 'n'。(在后一种情况下,对应 values 条目中的实际值无关紧要。)请注意,nulls 不是文本字符串,只是一个数组:它不需要 '\0' 终止符。

返回值

具有修改的新行,分配在上级执行器上下文中,或在发生错误时为 NULL(有关错误指示,请参阅 SPI_result

发生错误时,SPI_result 设置如下

SPI_ERROR_ARGUMENT

如果 relNULL,或者如果 rowNULL,或者如果 ncols 小于或等于 0,或者如果 colnumNULL,或者如果 valuesNULL

SPI_ERROR_NOATTRIBUTE

如果 colnum 包含无效的列号(小于或等于 0 或大于 row 中的列数)

SPI_ERROR_UNCONNECTED

如果 SPI 未处于活动状态

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用此表单报告文档问题。