Re: computational model of transactions

From: Marshall <marshall.spight_at_gmail.com>
Date: 5 Aug 2006 23:37:17 -0700
Message-ID: <1154846237.701348.259970_at_h48g2000cwc.googlegroups.com>


Brian Selzer wrote:
>
> A compiler can tell the difference between x = 10 and x = x + 5, why can't a
> dbms?

A fair question.

It seems to me easy enough to tell if an UPDATE statement references any attributes on the right side of the equals sign.

> The system should be able to detect whether or not the new value depends on
> the previous value. The first UPDATE statement above does not, the second
> does.
>
> As an aside, it is not really necessary that the system detect this: but the
> developer must, because in a concurrent environment the difference in the
> semantics of replacement and modification has ramifications that can affect
> the appropriate choice of transaction isolation level.
>
> > While we're talking manipulations: what about
> > INSERT and DELETE? Are there variants of
> > those, too? Are those supposed to be handled
> > differently in transaction context?
> >
>
> I haven't given this much attention, but at first glance, no, I don't think
> so.

How about

INSERT into Table (a) values (1) where not exists (select * from Table where a = 1);

in two separate concurrent transactions?

Marshall Received on Sun Aug 06 2006 - 08:37:17 CEST

Original text of this message