You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@turbine.apache.org by Bill Schneider <bs...@vecna.com> on 2002/02/25 15:49:35 UTC

autoincrement columns: getting value without insert?

Is there a canonical way in Torque to do something like this:

1. Create a new object with its constructor (e.g., new Category(), new 
Author())

2. get the ID value that the object *will have* if I called save(), even 
if I'm not ready to call save yet

If I were writing Oracle-specific code, I would use a sequence and 
select xxx.nextval from dual, use this value as my ID if I save the 
object, and throw the ID away if I don't.

In Torque, there are a lot of different permutations: different 
databases (not all have sequences) and different ID method generation 
techniques (Torque id broker vs. native, and native might generate 
post-insertion).  So there's probably not a way to do this with native 
sequences that will work on on all DBs.

(Here's a kludge, though: .save() the record and doDelete() it 
immediately; the ID will then be legal if you save it again.  :-))

So I'm wondering, if I commit to the ID broker, is there a good way to 
fetch an ID without inserting a record, that is guaranteed to be legal 
if I *do* insert the record, similar to the get-sequence-value, 
maybe-insert pattern with Oracle?

Thanks,

-- Bill


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: autoincrement columns: getting value without insert?

Posted by John McNally <jm...@collab.net>.
IDBroker.getNextId(tableName, connection)

Bill Schneider wrote:
> 
> Is there a canonical way in Torque to do something like this:
> 
> 1. Create a new object with its constructor (e.g., new Category(), new
> Author())
> 
> 2. get the ID value that the object *will have* if I called save(), even
> if I'm not ready to call save yet
> 
> If I were writing Oracle-specific code, I would use a sequence and
> select xxx.nextval from dual, use this value as my ID if I save the
> object, and throw the ID away if I don't.
> 
> In Torque, there are a lot of different permutations: different
> databases (not all have sequences) and different ID method generation
> techniques (Torque id broker vs. native, and native might generate
> post-insertion).  So there's probably not a way to do this with native
> sequences that will work on on all DBs.
> 
> (Here's a kludge, though: .save() the record and doDelete() it
> immediately; the ID will then be legal if you save it again.  :-))
> 
> So I'm wondering, if I commit to the ID broker, is there a good way to
> fetch an ID without inserting a record, that is guaranteed to be legal
> if I *do* insert the record, similar to the get-sequence-value,
> maybe-insert pattern with Oracle?
> 
> Thanks,
> 
> -- Bill
> 
> --
> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>