Hi Peter,

thanks.

But it does not seem to work in my environment. Probably somewhere a bug on my 
side.

Hartwig

Am 07.05.2013 um 19:55 schrieb Peter Aronson:

> At least for SQLite it appears to be.  From the Update doc page 
> (http://www.sqlite.org/lang_update.html):
> 
> "The modifications made to each row affected by an UPDATE statement are 
> determined by the list of assignments following the SET keyword. Each 
> assignment 
> specifies a column name to the left of the equals sign and a scalar 
> expression 
> to the right. For each affected row, the named columns are set to the values 
> found by evaluating the corresponding scalar expressions. If a single 
> column-name appears more than once in the list of assignment expressions, all 
> but the rightmost occurrence is ignored. Columns that do not appear in the 
> list 
> of assignments are left unmodified. The scalar expressions may refer to 
> columns 
> of the row being updated. In this case all scalar expressions are evaluated 
> before any assignments are made."
> 
> And in fact I rely on it behaving this way for in one place in my SQLite code 
> and it seems to be working correctly.
> 
> Peter
> 
> ----- Original Message ----
>> From: skywind mailing lists <[email protected]>
>> To: General Discussion of SQLite Database <[email protected]>
>> Sent: Tue, May 7, 2013 10:46:42 AM
>> Subject: Re: [sqlite] Update statement
>> 
>> Hi,
>> 
>> my question is: is it guaranteed that it works?
>> 
>> Regards,
>> Hartwig
>> 
>> Am 07.05.2013 um 03:24 schrieb James K. Lowden:
>> 
>>> On Mon, 6 May 2013 23:53:40 +0100
>>> Simon Slavin <[email protected]> wrote:
>>> 
>>>>> How do I create this kind of update statement?
>>>>> 
>>>>> UPDATE T SET a=0.5*(a+b), b=0.5*(b-a);
>>>>> 
>>>>> The RHS should always be used with the values of a and b before the
>>>>> assignment.
>>>>> 
>>>>> I think that the result of this kind of statement is undefined, or?
>>>> 
>>>> No need to worry, it will work the way you want it to work:
>>>> 
>>>> The row is read.
>>>> The new values are calculated.
>>>> The new values are written to the database.
>>> ...
>>>> That was a terrible description. 
>>> 
>>> Actually that's not a bad approximation of what happens.  Here's a
>>> simpler example:
>>> 
>>> sqlite> create table t(a int, b int);
>>> sqlite> insert into t values (1,2);
>>> sqlite> select * from t;
>>> a          b        
>>> ----------  ----------
>>> 1          2        
>>> sqlite> update t set a=b, b=a;  -- Et Voila! 
>>> sqlite> select * from t;
>>> a          b        
>>> ----------  ----------
>>> 2          1        
>>> 
>>> There is no "RHS".  The syntax and semantics of SQL are its own; they
>>> cannot be extrapolated from other languages.  
>> 
>> I know but everybody knows what I meant, or? And its a quite brief 
> description.
>> 
>>> 
>>> --jkl
>>> _______________________________________________
>>> sqlite-users mailing list
>>> [email protected]
>>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> 
>> _______________________________________________
>> sqlite-users mailing list
>> [email protected]
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>> 
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to