On Wed, May 12, 2010 at 1:08 AM, Peter Rabbitson <[email protected]<rabbit%[email protected]> > wrote:
> Bill Moseley wrote: > > > > Is this the "blanket increment/decrement" that's referring to? > > > > sqlite> update track set pos = pos - 1 where cd = 1 and pos > 2; > > > > No need for where conds and the like. The most minimal test case is > to create a table with 1 column, with a unique constraint, and put > in the numbers 1..5. Then try: > > UPDATE tab SET col = col + 1; > > and > > UPDATE tab SET col = col - 1; > > On sqlite (at least) on of these fails. Not sure for other databases, > never had the time to test. > Seems to be the + 1 version. Postgresql has same "problem." Most of us work in just one or two databases, so indeed hard to test. That's why I was asking about a flag so users can tell dbic the approach to use. There's this trick, too, that seems to work on pg and sqlite: UPDATE tab SET col = -col; UPDATE tab SET col = -col + 1; I just checked and our ordered tables tend to be in groups of 100 or less. Many less than 20, so it's not a huge issue. A hundred updates is quite a few compared to two. I can't imagine having thousands of rows that I wanted to have an order on. -- Bill Moseley [email protected]
_______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/[email protected]
