It's not just that the set of updates are deferred; but if the database product provides 'true' transaction support, they should stand or fall together. Either they'll all succeed, or none.

The general idea is that sometimes a series of changes to a database represent a single logical transaction. The classic example is if you want to move some money from Alice's account to Bob's: you might update the record for Alice's account to have $100 less, and update the record for Bob's account to have $100 more. That will normally have to be at least two updates; but you want t o regard it as a single transaction. If for some reason there is an error when you come do to one of these updates, without transaction support, you're left in a dodgy situation: either $100 has vanished from the system altogether: or Alice still has her $100, and Bob's got a bonus. By wrapping the two queries in a transaction, you ensure that doesn't happen. A 'proper' RDBMS should guarantee this - even if it's not an internal error (Alice's record isn't there, or the table is locked), even if there's a power cut halfway through, the database (if it's not corrupted altogether!) will be in one situation or another.

- Ben

Bob Sneidar wrote:
Ohhh, so let me see if I get it. I issue a series of update statements, but the data is not actually in the database yet so another user querying the database for those records would see what the data "used to be" until I issue a a revdb_commit()?

I can use that to my advantage I suppose.

Bob Sneidar
IT Manager
Logos Management
Calvary Chapel CM

On Jan 12, 2009, at 2:07 PM, Jan Schenkel wrote:

--- Bob Sneidar <[email protected]> wrote:
Hi all.

I have always been a bit confused at this. So far as
I can tell, I
cannot get data back INTO a cursor, I can only read
data FROM the
cursor. In order to write data back to the database,
I have to execute
an SQL query. So what is Revdb_commit() for? Commit
what? I just wrote
the data directly to the SQL database in a query
didn't I?

Or am I mistaken about the ability to write data
back to a cursor?

Bob Sneidar


The revdb_commit function isn't meant for committing
changes to cursors - revdb cursors are by default
read-only; though I think if used with Valentina
Server and the VXCMD you can have read-write cursors,
but I digress.

It is meant for committing transactions. Depending on
the database, all the INSERT, UPDATE and DELETE
statements are each seen as a separate transaction, or
will be considered one giant transaction until you
effectively call revdb_commit or revdb_rollback.

Jan Schenkel.

Quartam Reports & PDF Library for Revolution
<http://www.quartam.com>

=====
"As we grow older, we grow both wiser and more foolish at the same time." (La Rochefoucauld)


_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to