>Thanks Jim,
>The locking description is too vague, I think. It starts by saying "Perform an insert or append operation", but since 4 rows later it says "append operation completes", it should, at least say "BEGIN an insert...". It does not specify where the reading of the current value occurs, i.e. is it before or after the header lock. The first thing the insert process should do is to not allow any other insert to start, and the start is to me the read of the current autoinc value.
And shouldn't it just error out if it can't lock the header? I mean, the scenario should be
- lock the header or error out
- get the autoinc value
- insert the record
- update the header
- unlock the header
This may or may not be wrapped in a transaction, which shouldn't matter at this level - transaction may be affected by how this went, but not vice versa.
Now let's conduct a little mental experiment to see whether there may be other possible scenarios.