Any return other then 0 from the API function you use to exec your SQL
statement is a fail.

--
JB


-----Original Message-----
From: Vladimir Zelinski [mailto:[EMAIL PROTECTED] 
Sent: Thursday, May 12, 2005 10:31 AM
To: sqlite-users@sqlite.org
Subject: Re: [sqlite] Does sqlite really support transaction?

I understand that. Question is HOW I can check if
statement failed or successful? What variable contains
status of the result of execution.

Vladimir

--- Gi Weijers <[EMAIL PROTECTED]> wrote:
> Vladimir,
> 
> When you execute individual statements and
> sqlite3_step or sqlite3_exec
> returns an error code you should execute a
> 'ROLLBACK' in stead of a
> 'COMMIT'. So the logic is:
> 
> exec "BEGIN"
> 
> perform a bunch of statements
> 
> if(all statements successful)
>    exec "COMMIT"
> else
>    exec "ROLLBACK"
> 
> Ideally you'd quit executing statements as soon as
> one fails.
> BTW: the 'END' statement is not needed.
> 
> Gi
> 
> Vladimir Zelinski wrote:
> > Of course, I read documentation and saw that
> > transaction is a supported feature. But I can't
> get to
> > work it. In order to make sure that we talk about
> the
> > same thing I understand transaction as atomic
> > operation. One or more data modification language
> > statements can be placed within transaction. Only
> two
> > legal results for transaction might have take
> place:
> > 1) all statements executed successfully OR 2) none
> of
> > them successful. It can't be situation when some
> > statements are successful and some failed within
> the
> > same transaction.
> > 
> > I downloaded sqlite3 for Windows. My program
> > dynamically builds a file with sql statements like
> > this bellow:
> > 
> > 
> > BEGIN TRANSACTION;
> > 
> > -- This SQL statement fails because it's trying 
> > -- to insert a duplicate key.
> > INSERT INTO t(id) VALUES(10);
> > 
> > -- This SQL statement always successful despite on
> > fact
> > -- that first SQL statement failed
> > UPDATE t SET end_date=20 WHERE id=9;
> >  
> > END TRANSACTION;
> > COMMIT TRANSACTION;
> > 
> > 
> > Update statement always successful, even when
> INSERT
> > fails. So situation is such that some DML
> statements
> > are successful and some failed within the same
> > transaction. I could not belive that. I tried
> dozens
> > of times using syntax UPDATE OR ROLLBACK SET ...,
> but
> > I had no luck
> > I expect that UPDATE will never change a data on
> the
> > table if INSERT fails.
> > 
> > Please, explain me what am I doing wrong? I'm a
> > database person, but I could not figure out what
> to do
> > in such situation.
> > I need to get to work number of SQL statements in
> > transactional mode: all or nothing succeeds.
> > 
> > Is any way to check result of execution SQL
> statement?
> > Is it possible to select a system variable that
> would
> > give me status of the last SQL.
> > 
> > Thank you very much,
> > Vladimir
> 
> 


Reply via email to