On 09/02/2014 07:12 PM, Joel Jacobson wrote:
On Tue, Sep 2, 2014 at 6:03 PM, Heikki Linnakangas
<hlinnakan...@vmware.com> wrote:
I think that would actually be a good way to enforce the rule that an UPDATE
only updates a single row. Just put a "ASSERT ROW_COUNT=1;" after the
update.
So instead of one line of code, I would need to write two lines of
code at almost *all* places where a currently have an UPDATE. :-(
Right. Doesn't really seem that bad, to be honest. You can put it on the
same line if you wish.
I think the problem with my perspective is my ambitions. I use
PL/pgSQL not as a secondary language, but it's my primary language for
developing applications.
Sure, a lot of people do that.
For me, updating a row, is like setting a variable in a normal language.
No normal language would require two rows to set a variable.
It would be like having to do:
my $var = 10;
die unless $var == 10;
in Perl to set a variable.
I don't think most applications are like that. See Kevin's comments
about doing things in a set-oriented way instead of row-by-row. I know
I've changed several procedures from the row-oriented style, looping
over rows with a FOR loop, updating each one individually, to
set-oriented style with a single UPDATE for a bunch of rows. It makes
for more concise code, and performs better. I'm sure there are
counter-examples, and I've also written many UPDATE statements that are
expected to update exactly one row, but I find an ASSERT would be
adequate for that.
- Heikki
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers