[cvsnt] Re: Repository auditing with Oracle

Anthony Williams anthony_w.geo at yahoo.com
Tue Jan 10 10:53:26 GMT 2006


Tony Hoyle <tony.hoyle at march-hare.com> writes:

> Paulo Soares wrote:
>> If I assume that there's only one writer the sequence can even be generated
>> internally by the cvsnt app and do away with all this identity need.
>
> You cannot make that assumption - that's why you need the atomicity. You
> need to be able to get an ID for an inserted row in a manner that always
> returns the correct one no matter how many writers there are on the
> database.

INSERT INTO SomeTable (ID, someOtherColumn) VALUES (ID_SEQUENCE.NEXTVAL,
'someValue') RETURNING (ID) INTO :someBindVariable

will do it for Oracle. ID_SEQUENCE must be a SEQUENCE (created with CREATE
SEQUENCE).

You could also create a trigger that used ID_SEQUENCE to populate ID, in which
case the insert becomes:

INSERT INTO SomeTable (someOtherColumn) VALUES ('someValue')
RETURNING (ID) INTO :someBindVariable

Alternatively, you can get the sequence value first:

SELECT ID_SEQUENCE.NEXTVAL FROM DUAL

INSERT INTO SomeTable (ID, otherColumn) VALUES (valueFromSequence,otherValue);

or afterwards:

INSERT INTO SomeTable (ID, someOtherColumn) VALUES (ID_SEQUENCE.NEXTVAL,
'someValue')

SELECT ID_SEQUENCE.CURRVAL FROM DUAL

HTH

Anthony
-- 
Anthony Williams
Software Developer
Just Software Solutions Ltd
http://www.justsoftwaresolutions.co.uk



More information about the cvsnt mailing list