L'obtention de Lignes Affectées par l'instruction de mise à JOUR en RAW plpgsql

Cela a été demandé à plusieurs reprises ici et ici, mais aucune des réponses sont adapté à mon cas, car je ne veux pas l'exécution de mes instruction de mise à jour en PL/PgSQL la fonction et l'utilisation GET DIAGNOSTICS integer_var = ROW_COUNT.

Je dois le faire en SQL brut.

Par exemple, dans MS SQL SERVER, nous avons @@ROWCOUNT qui pourraient être utilisés comme suit :

UPDATE <target_table> 
SET Proprerty0 = Value0
WHERE <predicate>;
SELECT <computed_value_columns> 
 FROM <target> 
 WHERE @@ROWCOUNT > 0;

Dans un aller-retour à la base de données je sais pas si la mise à jour a été réussie et obtenir les valeurs calculées à l'arrière.

Ce qui pourrait être utilisé à la place de "@@ROWCOUNT' ?
Quelqu'un peut-il confirmer que c'est impossible en ce moment ?

Merci d'avance.

EDIT 1 : je confirme que j'ai besoin d'utiliser SQL brut (j'ai écrit "raw plpgsql" dans la description d'origine).

Dans une tentative de faire de ma question plus claire merci de considérer que l'instruction de mise à jour affecte qu'une seule ligne et de réfléchir à l'accès concurrentiel optimiste:

  1. Le client fait une SELECT Déclaration au premier abord.

  2. Il construit la mise à JOUR et connaît la base de données des colonnes calculées doivent être inclus dans la clause SELECT. Entre autres choses, le prédicat comprend un horodatage qui est calculée à chaque fois les lignes sont mises à jour.

  3. Donc, si nous avons 1 ligne retournée alors tout est OK. Si aucune ligne n'est renvoyée, alors, nous savons qu'il y a une mise à jour précédente et le client peut avoir besoin d'actualiser les données avant d'essayer de mettre à jour la clause de nouveau. C'est pourquoi nous avons besoin de savoir combien de lignes où affectées par l'instruction de mise à jour avant de retourner colonnes calculées. Pas de ligne doit être renvoyée si la mise à jour échoue.

Veuillez toujours mentionner votre version de PostgreSQL en question.
Afin de vous ne pas voulez faire dans PL/pgSQL, mais en SQL. Sinon, vous utiliser GET DIAGNOSTICS
Voir la balise correspondante.
Re version: Mon erreur. J'oublie que les gens utilisent la version balises spécifiques juste pour dire "voici la version que j'utilise".
J'ai élaboré ma réponse basée sur vos modifications. Il ressemble à UPDATE ... RETURNING fait ce que vous avez besoin.

OriginalL'auteur Olivier MATROT | 2012-11-30