Subject | Re: [Firebird-Architect] AND CHAIN / AND NO CHAIN |
---|---|
Author | David Jencks |
Post date | 2004-06-08T04:24:31Z |
<snip>
I wrote
neck out, I think:
COMMIT AND CHAIN
is the same as
COMMIT
(see all effects of other committed transactions)
BEGIN TRANSACTION
(no relationship between first and second transaction)
I think sql has no concept of a snapshot. My understanding of
firebird's COMMIT RETAINING is that it applies permanently to durable
storage all changes made to the snapshot as of the transaction start,
and starts a new transaction based on this modified snapshot. No
changes made by other transactions are visible to the "retained"
transaction. As a side effect, cursor positions should be unaffected.
In other databases, or running at read committed "isolation", there are
no snapshots, so +- retaining should have no effect.
david jencks
I wrote
>> Not at all. I believe the idea is that after COMMIT AND CHAIN, youLester Caine wrote
>> see
>> all updates of other transactions committed before your commit. I
>> think the purpose is to avoid requiring an immediate BEGIN TRANSACTION
>> call. However, I don't know exactly what they mean by access mode or
>> diagnostics area limit
>
> Since the SQL2003 is a typical vague standard, it's the similaritiesI'm getting into areas I'm not 100% certain of here, but, sticking my
> and
> differences I'm trying to master.
> So AND CHAIN would be
> COMMIT X
> SET TRANSACTION X ......
> where ...... matches the original transaction
> Is the bit I am missing here that RETAIN keeps it's CURSOR settings as
> they were before the COMMIT? Since I'm normally accessing Firebird via
> IBO or PHP, some of the subtleties get hidden :)
>
neck out, I think:
COMMIT AND CHAIN
is the same as
COMMIT
(see all effects of other committed transactions)
BEGIN TRANSACTION
(no relationship between first and second transaction)
I think sql has no concept of a snapshot. My understanding of
firebird's COMMIT RETAINING is that it applies permanently to durable
storage all changes made to the snapshot as of the transaction start,
and starts a new transaction based on this modified snapshot. No
changes made by other transactions are visible to the "retained"
transaction. As a side effect, cursor positions should be unaffected.
In other databases, or running at read committed "isolation", there are
no snapshots, so +- retaining should have no effect.
david jencks