How to tell if that UPDATE worked?

Started by Dr. Evilabout 25 years ago5 messagesgeneral
Jump to latest
#1Dr. Evil
drevil@sidereal.kz

I'm writing some stuff in PL/pgsql (actually, a lot of stuff). I have
a question: At various times, it does UPDATEs. Is there a way to tell
if the UPDATE actually affected any rows or not? I couldn't see how
to get UPDATE to return anything.

Thanks for any tips.

#2Jan Wieck
JanWieck@Yahoo.com
In reply to: Dr. Evil (#1)
Re: How to tell if that UPDATE worked?

drevil@sidereal.kz wrote:

I'm writing some stuff in PL/pgsql (actually, a lot of stuff). I have
a question: At various times, it does UPDATEs. Is there a way to tell
if the UPDATE actually affected any rows or not? I couldn't see how
to get UPDATE to return anything.

Do a

GET DIAGNOSTICS SELECT PROCESSED INTO <int4_variable>;

directly after an INSERT, UPDATE or DELETE statement and
you'll know how many rows have been hit.

Also you can get the OID of an inserted row with

GET DIAGNOSTICS SELECT RESULT INTO <int4_variable>;

Er - is this another added feature where we're still lacking
documentation?

Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck@Yahoo.com #

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jan Wieck (#2)
Re: How to tell if that UPDATE worked?

Jan Wieck <janwieck@Yahoo.com> writes:

Do a
GET DIAGNOSTICS SELECT PROCESSED INTO <int4_variable>;
directly after an INSERT, UPDATE or DELETE statement and
you'll know how many rows have been hit.
Also you can get the OID of an inserted row with
GET DIAGNOSTICS SELECT RESULT INTO <int4_variable>;
Er - is this another added feature where we're still lacking
documentation?

After a quick grep, I can state that the absolute sum total of the
documentation on this feature is:

HISTORY: New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)

Better start writing.

regards, tom lane

#4Dr. Evil
drevil@sidereal.kz
In reply to: Jan Wieck (#2)
Re: How to tell if that UPDATE worked?

Do a

GET DIAGNOSTICS SELECT PROCESSED INTO <int4_variable>;

directly after an INSERT, UPDATE or DELETE statement and
you'll know how many rows have been hit.

Also you can get the OID of an inserted row with

GET DIAGNOSTICS SELECT RESULT INTO <int4_variable>;

Thanks for the tip. That is exactly what I needed. plpgsql is a
painful language in many ways, but it is also very straightforward, so
I'm writing the bulk of my project in it.

Er - is this another added feature where we're still lacking
documentation?

As pointed out by Tom in a subsequent email, there is one cryptic line
in there, which is probably why I overlooked it...

Thanks for your help

#5Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#3)
Re: How to tell if that UPDATE worked?

Jan Wieck <janwieck@Yahoo.com> writes:

Do a
GET DIAGNOSTICS SELECT PROCESSED INTO <int4_variable>;
directly after an INSERT, UPDATE or DELETE statement and
you'll know how many rows have been hit.
Also you can get the OID of an inserted row with
GET DIAGNOSTICS SELECT RESULT INTO <int4_variable>;
Er - is this another added feature where we're still lacking
documentation?

After a quick grep, I can state that the absolute sum total of the
documentation on this feature is:

HISTORY: New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)

Better start writing.

The good news is that this is a new 7.1 feature, and I haven't checked
all the HISTORY items for documentation updates yet.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026