PostgreSQLLa base de données la plus sophistiquée au monde.

Version anglaise

SPI_modifytuple

SPI_modifytuple — crée une ligne en remplaçant les champs sélectionnés d'une ligne donnée

Synopsis

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

Description

SPI_modifytuple crée une nouvelle ligne en retirant les nouvelles valeurs pour les colonnes sélectionnées et en copiant les colonnes de la ligne d'origine à d'autres positions. La ligne d'entrée n'est pas modifiée.

Arguments

Relation rel

Utilisé seulement en tant que source du descripteur de ligne pour la ligne (passez une relation plutôt qu'un descripteur de ligne est une erreur).

HeapTuple row

rangée à modifier

int ncols

nombre de numéros de colonnes à changer

int * colnum

tableau de longueur ncols, contenant les numéros de colonnes à modifier (le numéro des colonnes commence à 1)

Datum * values

tableau de longueur ncols, contenant les nouvelles valeurs pour les colonnes spécifiées

const char * nulls

tableau de longueur ncols, décrivant les nouvelles valeurs NULL

Si nulls vaut NULL, alors SPI_modifytuple suppose qu'aucune valeur n'est NULL. Dans le cas contraire, chaque entrée du tableau nulls doit valoir ' ' si la nouvelle valeur correspondante est non NULL et 'n' si la nouvelle valeur correspondante est NULL (dans ce dernier cas, la valeur réelle de l'entrée values correspondante n'a pas d'importance). Notez que nulls n'est pas une chaîne de texte. C'est un tableau et, de ce fait, il n'a pas besoin d'un caractère de fin '\0'.

Valeur de retour

nouvelle ligne avec modifications, allouée dans le contexte de mémoire courant ; NULL seulement si row est NULL

En cas d'erreur, SPI_result est positionnée comme suit :

SPI_ERROR_ARGUMENT

si rel est NULL ou si row est NULL ou si ncols est inférieur ou égal à 0 ou si nocolonne est NULL ou si values est NULL.

SPI_ERROR_NOATTRIBUTE

si nocolonne contient un numéro de colonne invalide (inférieur ou égal à 0 ou supérieur au numéro de colonne dans row)