Is seq.setval() "non transactional" in the same sense as seq.nextval() is? More specifically, suppose I sometimes want to get IDs one-by-one using nextval(), but sometimes I want a block of a thousand IDs. To get the latter, I want to do this: select setval('object_id_seq', nextval('object_id_seq') + 1000, false); Now suppose two processes do this simultaneously. Maybe they're in transactions, maybe they're not. Are they guaranteed to get distinct blocks of IDs? Or is it possible that each will execute nextval() and get N and N+1 respectively, and then do setval() to N+1000 and N+1001, resulting in two overlapping blocks. If the answer is, "This won't work," then what's a better way to do this? Thanks, Craig -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance