I'm not sure this will cover the common strategies used by most containers. I recall implementing a few different strategies in another appserver:

o DB auto update sequence
o Container manual update sequence
o DB last modified timestamp column
o Container manual update sequence (unreliable but people use it)
o Check column values haven't changed between select an update
   o All columns
   o Some special columns
   o Only columns being updated
   o All columns that were read in during the tx

I doubt we need all of these, but I think we should allow room for growth in the schema.

-dain

On Jul 31, 2006, at 7:38 AM, Matt Hogstrom wrote:

Perhaps one additional element in the optimistic section like:

  <concurrency-control>[DATABASE | CONTAINER]</concurrency-control>



Dain Sundstrom wrote:
+1 looks good
On Jul 26, 2006, at 7:47 PM, Matt Hogstrom wrote:
          <locking-strategy>
              <optimistic-locking>
                <optimistic-column>occColumn</optimistic-column>
                <optimistic-type>TIMESTAMP</optimistic-type>
          </locking-strategy>
one comment... this xml implies that the database is handling the auto increment/update of the optimistic lock column. I have seen schemas that assume that the application code will be handling this, with some sql like this:
UPDATE foo
SET value = newValue, ver = 5
WHERE pk = myPk AND ver = 4
If the database is auto updating the row, you will need to reread the column after any update, so if you make another update in the same transaction, you can assure you know the current value of the optimistic column.
-dain

Reply via email to