It appears that my requirements are to be able to do the following:

BEGIN parent;
insert into t values ('a');
BEGIN child;
insert into t values ('b');
insert into t values ('c');
ROLLBACK child;                              // child aborts
insert into t values ('d');
COMMIT parent;

As a result of this sequence, the table should have two new rows with values 
'a' and ‘d', but not 'b' and ‘c’.

I expanded Igor's example because a single transaction failure performs a 
rollback. ( Think that is true).

Anyway, the above result is what is required and I cannot do this with the all 
or none concept.

I see that other databases have the concept of SavePoint.
I believe this will work for me but I am not sure.


BEGIN
insert into t values  ('a');
savepoint = SetSavePoint();
insert into t values ('b');
insert into t values ('c');
RestoreSavePoint(savepoint);
insert into t values ('d');
Commit

As a result of this sequence, the table should have two new rows with values 
'a' and ‘d', but not 'b' and ‘c’.

The difference here is that there is only one Begin and Commit.
There can be any number of savepoints. This seems to perform the same function.

I have used SQLite and like the ease of use.
Ray


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to