Subject | Re: [Firebird-Architect] SQL Update and Delete |
---|---|
Author | Jim Starkey |
Post date | 2004-10-13T18:53:48Z |
Samofatov, Nickolay wrote:
were the only one we supported. It works just as well with broken
transactions, i.e. READ COMMITTED, however.
it is need what it does.
definition requires repeatable reads. Attempting to modify a record
that you could not read is an error in almost everybody's book.
Things are different in transactions without consistency, however.
Nothing like adding up a column of numbers 10 times and getting 10
different numbers...
doesn't even qualify as an academic exercise.
>I cannot be so sure about that.Nonsense. I designed it to work with consistent transactions, which
>Standard syntax for UPDATE and DELETE statement was designed to work
>correctly and without update conflicts with READ COMMITTED isolation
>level.
>
>
>
were the only one we supported. It works just as well with broken
transactions, i.e. READ COMMITTED, however.
>If record changes in between you read and update it you can re-read theThis doesn't following any conceivable definition of transactions, but
>record, re-evaluate boolean condition for this record and re-execute
>expressions in SET clause.
>This is the approach how pessimistic locking (WITH LOCK) works now (it
>only doesn't have SET clause).
>
>
it is need what it does.
>Normal Firebird updates and deletes inherited GDML design which doesn'tCould you explain this rather brash assertion? A transaction by most
>follow this pattern and tends to raise unnecessary "update conflict"
>errors, but this is a bug which has to be fixed eventually. Now this is
>one of the major problems you have to address when migrating serious
>applications from Oracle to Firebird.
>
>
definition requires repeatable reads. Attempting to modify a record
that you could not read is an error in almost everybody's book.
Things are different in transactions without consistency, however.
Nothing like adding up a column of numbers 10 times and getting 10
different numbers...
>If you don't care about the right answer, worrying about what is proper
>In short, the MS extension for using joins in UPDATE and DELETE
>statement contradicts with proper MGA design.
>For Firebird it would be possible to implement it "properly" either via
>migrating to mandatory record locking via lock manager which sounds like
>a step backwards or adding join syntax limitations so those joins may be
>rewritten as a single boolean by the optimizer which sounds and looks
>really ugly.
>
>
>
doesn't even qualify as an academic exercise.