Postgresql 中文操作指南

SPI_modifytuple

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

Synopsis

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

Description

SPI_modifytuple 通过用所选列的新值替换、将原始行的列复制到其他位置来创建新行。输入行未修改。新行在高于执行者的上下文中返回。

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

Arguments

  • Relation _rel_

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

  • HeapTuple _row_

    • row to be modified

  • int _ncols_

    • 需要更改的列数

  • int * _colnum_

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

  • Datum * _values_

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

  • const char * _nulls_

    • 长度为 ncols 的数组,描述了哪些新值为空

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

Return Value

在高于执行者的上下文中分配的新行(包含修改),或在错误时分配 NULL (有关错误指示,请参见 SPI_result

出现错误时, SPI_result 设置如下:

  • SPI_ERROR_ARGUMENT

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

  • SPI_ERROR_NOATTRIBUTE

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

  • SPI_ERROR_UNCONNECTED

    • 如果 SPI 未激活